转自http://hi.baidu.com/killwolf110/item/838d56224067c63395f62b70

程序需要运行在越南地区,语言为越南文,操作系统为英文版,程序支持unicode,但是显示时还是出现乱码,主要出现在越南文的标点符号位置。

解决办法:
    1.控制面板 ——> 区域和语言选项——>语言——> 附加的语言支持 ——> 为复制文字和从右到左的语言安装文件(包括泰文) 为东亚语言安装文件选中上面的checkbox,然后系统自动安装语言包,再次运行程序,显示正常。

2.程序内部设置区域
    使用SetThreadLocale函数设置运行区域,如越南文:
    【delphi】SetThreadLocale($042A); 

设置前最好判断下环境,在特定的环境下才设置:

//处理越南文 ,$是英语 - 美国, $042A是越南,$是中文
//if (word(GetSystemDefaultLangID() and $eFF)=Lang_English) then
if (GetThreadLocale=$042A) or (GetThreadLocale=$) then //取得当前线程的地方ID
begin
SetThreadLocale($042A);
end;

代码添加在程序初始化的地方
    前提是控件支持Unicode,如TNT系列控件或AlphaControls(要开启TNT编译选项并重新编译并安装)

字体也是个问题,有时拖放控件的默认字体是不被支持的,显示时就会出现异常,如Dong,会显示为Doong或Donng,甚至是Do|ng。把字体换为 Tahoma,编码为默认,就好了。

3.非程序,如Flash
    解决办法是在英语操作系统里面,安装英文版本的Flash制作工具,如Flash MX
    在这个环境里面重新生成之前在中文环境里的flash。

区域设置 ID (LCID) 表

区域设置描述 简写 十六进制值 十进制值
南非荷兰语 af 0x0436 1078
阿尔巴尼亚语 sq 0x041C 1052
阿拉伯语 - 阿拉伯联合酋长国 ar-ae 0x3801 14337
阿拉伯语 - 巴林 ar-bh 0x3C01 15361
阿拉伯语 - 阿尔及利亚 ar-dz 0x1401 5121
阿拉伯语 - 埃及 ar-eg 0x0C01 3073
阿拉伯语 - 伊拉克 ar-iq 0x0801 2049
阿拉伯语 - 约旦 ar-jo 0x2C01 11265
阿拉伯语 - 科威特 ar-kw 0x3401 13313
阿拉伯语 - 黎巴嫩 ar-lb 0x3001 12289
阿拉伯语 - 利比亚 ar-ly 0x1001 4097
阿拉伯语 - 摩洛哥 ar-ma 0x1801 6145
阿拉伯语 - 阿曼 ar-om 0x2001 8193
阿拉伯语 - 卡塔尔 ar-qa 0x4001 16385
阿拉伯语 - 沙特阿拉伯 ar-sa 0x0401 1025
阿拉伯语 - 叙利亚 ar-sy 0x2801 10241
阿拉伯语 - 突尼斯 ar-tn 0x1C01 7169
阿拉伯语 - 也门 ar-ye 0x2401 9217
巴斯克语 eu 0x042D 1069
白俄罗斯语 be 0x0423 1059
保加利亚语 bg 0x0402 1026
加泰罗尼亚语 ca 0x0403 1027
中文 - 中华人民共和国 zh-cn 0x0804 2052
中文 - 中华人民共和国香港特别行政区 zh-hk 0x0C04 3076
中文 - 新加坡 zh-sg 0x1004 4100
中文 - 台湾地区 zh-tw 0x0404 1028
克罗地亚语 hr 0x041A 1050
捷克语 cs 0x0405 1029
丹麦语 da 0x0406 1030
荷兰语 nl 0x0413 1043
荷兰语 - 比利时 nl-be 0x0813 2067
英语 - 澳大利亚 en-au 0x0C09 3081
英语 - 伯利兹 en-bz 0x2809 10249
英语 - 加拿大 en-ca 0x1009 4105
英语 - 爱尔兰 en-ie 0x1809 6153
英语 - 牙买加 en-jm 0x2009 8201
英语 - 新西兰 en-nz 0x1409 5129
英语 - 南非 en-za 0x1C09 7177
英语 - 特立尼达岛 en-tt 0x2C09 11273
英语 - 英国 en-gb 0x0809 2057
英语 - 美国 en-us 0x0409 1033
爱沙尼亚语 et 0x0425 1061
波斯语 fa 0x0429 1065
芬兰语 fi 0x040B 1035
法罗语 fo 0x0438 1080
法语 - 标准 fr 0x040C 1036
法语 - 比利时 fr-be 0x080C 2060
法语 - 加拿大 fr-ca 0x0C0C 3084
法语 - 卢森堡 fr-lu 0x140C 5132
法语 - 瑞士 fr-ch 0x100C 4108
盖尔语 - 苏格兰 gd 0x043C 1084
德语 - 标准 de 0x0407 1031
德语 - 奥地利 de-at 0x0C07 3079
德语 - 列支敦士登 de-li 0x1407 5127
德语 - 卢森堡 de-lu 0x1007 4103
德语 - 瑞士 de-ch 0x0807 2055
希腊语 el 0x0408 1032
Hebrew he 0x040D 1037
印地语 hi 0x0439 1081
匈牙利语 hu 0x040E 1038
冰岛语 is 0x040F 1039
印度尼西亚语 in 0x0421 1057
意大利语 - 标准 it 0x0410 1040
意大利语 - 瑞士 it-ch 0x0810 2064
日语 ja 0x0411 1041
朝鲜语 ko 0x0412 1042
拉脱维亚语 lv 0x0426 1062
立陶宛语 lt 0x0427 1063
马其顿语 mk 0x042F 1071
马来语 - 马来西亚 ms 0x043E 1086
马耳他语 mt 0x043A 1082
挪威语 - 博克马尔 no 0x0414 1044
波兰语 pl 0x0415 1045
葡萄牙语 - 标准 pt 0x0816 2070
葡萄牙语 - 巴西 pt-br 0x0416 1046
拉托-罗马语 rm 0x0417 1047
罗马尼亚语 ro 0x0418 1048
罗马尼亚语 - 摩尔多瓦 ro-mo 0x0818 2072
俄语 ru 0x0419 1049
俄语 - 摩尔多瓦 ru-mo 0x0819 2073
塞尔维亚语 - 塞瑞利克 sr 0x0C1A 3098
Setsuana tn 0x0432 1074
斯洛文尼亚语 sl 0x0424 1060
斯洛伐克语 sk 0x041B 1051
索布语 sb 0x042E 1070
西班牙语 - 标准 es 0x040A 1034
西班牙语 - 阿根廷 es-ar 0x2C0A 11274
西班牙语 - 玻利维亚 es-bo 0x400A 16394
西班牙语 - 智利 es-cl 0x340A 13322
西班牙语 - 哥伦比亚 es-co 0x240A 9226
西班牙语 - 哥斯达黎加 es-cr 0x140A 5130
西班牙语 - 多米尼加共和国 es-do 0x1C0A 7178
西班牙语 - 厄瓜多尔 es-ec 0x300A 12298
西班牙语 - 危地马拉 es-gt 0x100A 4106
西班牙语 - 洪都拉斯 es-hn 0x480A 18442
西班牙语 - 墨西哥 es-mx 0x080A 2058
西班牙语 - 尼加拉瓜 es-ni 0x4C0A 19466
西班牙语 - 巴拿马 es-pa 0x180A 6154
西班牙语 - 秘鲁 es-pe 0x280A 10250
西班牙语 - 波多黎各 es-pr 0x500A 20490
西班牙语 - 巴拉圭 es-py 0x3C0A 15370
西班牙语 - 萨尔瓦多 es-sv 0x440A 17418
西班牙语 - 乌拉圭 es-uy 0x380A 14346
西班牙语 - 委内瑞拉 es-ve 0x200A 8202
苏图语 sx 0x0430 1072
瑞典语 sv 0x041D 1053
瑞典语 - 芬兰 sv-fi 0x081D 2077
泰语 th 0x041E 1054
土耳其语 tr 0x041F 1055
汤加语 ts 0x0431 1073
乌克兰语 uk 0x0422 1058
乌尔都语 - 巴基斯坦 ur 0x0420 1056
越南语 vi 0x042A 1066
科萨语 xh 0x0434 1076
意第绪语 ji 0x043D 1085
祖鲁语 zu 0x0435 1077

【转】SetThreadLocale解决越南文乱码问题的更多相关文章

  1. 解决Linux文档显示中文乱码问题以及编码转换

    解决Linux文档显示中文乱码问题以及编码转换 解决Linux文档显示中文乱码问题以及编码转换 使vi支持GBK编码 由于Windows下默认编码是GBK,而linux下的默认编码是UTF-8,所以打 ...

  2. 【转】解决jsp参数传递乱码的问题

    解决jsp参数传递乱码的问题 计算机生于美国,英语是他的母语,而英语以外的其它语言对他来说都是外语.他跟我们一样,不管外语掌握到什么程度,也不会像母语那样使用得那么好,时常也会出一些“拼写错误”问题. ...

  3. 彻底解决matplotlib中文乱码问题(转)

    彻底解决matplotlib中文乱码问题 1.环境查看a.系统版本查看[hadoop@p168 ~]$ cat /etc/redhat-releaseCentOS Linux release 7.2. ...

  4. 彻底解决mysql中文乱码的办法 ???

      MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin12.table的语系设定问题(包含character与collation)3.客户端程式(例如p ...

  5. 解决Eclipse中文乱码 - 技术博客 - 51CTO技术博客 http://hsj69106.blog.51cto.com/1017401/595598/

    解决Eclipse中文乱码 - 技术博客 - 51CTO技术博客  http://hsj69106.blog.51cto.com/1017401/595598/

  6. 彻底解决mysql中文乱码的办法,修改mysql解压缩版(免安装版或zip版)字符编码

    MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如server字符编码还停留在latin12.table的语系设定问题(包含character与collation)3.客 ...

  7. 解决 Android Studio 乱码问题

    http://www.eoeandroid.com/thread-275485-1-1.html 很多同学都安装了Android Studio,但是发现中文是乱码,其实这个很好解决的.在IDE里点击F ...

  8. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题

    1 设置中文显示环境 1. 打开System Settings 2. 打开Personal-> Language Support. 会弹出如下对话框,提示你“语言支持没安装完整”. 点击“Rem ...

  9. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题[转载]

    转载自:http://www.cnblogs.com/zhcncn/p/4032321.html 写在前面:解决gedit 在txt文件格式出现乱码的问题,在我自己的操作中是需要把系统设置成中文显示环 ...

随机推荐

  1. 操作系统开发之——一个简单的Bootsect

    先吓唬一下读者朋友呵呵,直接发代码:(这是UOS操作系统的Bootsect)(有兴趣的朋友能够增加我们,联系方式在最后) ;------------------------------ ;文件名称:B ...

  2. 算法笔记_068:Dijkstra算法简单介绍(Java)

    目录 1 问题描述 2 解决方案 2.1 使用Dijkstra算法得到最短距离示例 2.2 具体编码   1 问题描述 何为Dijkstra算法? Dijkstra算法功能:给出加权连通图中一个顶点, ...

  3. Java之内部类(1) - 为什么需要内部类

    为什么需要内部类 一般来说,内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外围类的对象.所以可以认为内部类提供了某种进入其外围类的窗口. 内部类必须要回答的一个问题是:如果只是需要一个对接 ...

  4. 两名技术人员,历经8小时Piranha Games成功集成Xsolla

    w=580&h=304" alt="" width="580" height="304" style="max- ...

  5. jumpserver v0.5.0 创建用户和管理机器

    用户管理-创建用户    data 用户详情 如下 创建用户组 data 资产列表添加资产 jumpserver 的 root 公钥需保持到 后端服务器的 authorized_keys 里, 然后测 ...

  6. xcode9.2 objective-c install (mac 10.12.6)

    1. xcode下载: https://download.developer.apple.com/Developer_Tools/Xcode_9.2/Xcode_9.2.xip 2. 点击默认安装即可 ...

  7. unity, particle play once and destroy

    粒子播放一次后销毁:        //ref: http://answers.unity3d.com/questions/219609/auto-destroying-particle-system ...

  8. Java并发编程(六):Java里实现对象安全发布的四种方式

    接上篇,首先要了解什么是对象的发布与逸出? Java里安全发布对象的四种方法1.单例(注意懒汉和饿汉的区别)2.静态属性,注意类里的静态域和静态代码块的顺序有要求3.枚举4.final

  9. Spring Boot(七):spring boot测试介绍

    首先maven要引入spring-boot-starter-test这个包. 先看一段代码 @RunWith(SpringRunner.class) @SpringBootTest(webEnviro ...

  10. PHP+shell实现多线程的方法

    PHP+shell实现多线程的方法 这里介绍怎样借助shell脚本实现多线程. 先写个简单的php代码.这里为了让脚本运行时间更长.方便看效果,sleep一下.呵呵.先看下test.php的代码:ls ...