【转】SetThreadLocale解决越南文乱码问题
转自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解决越南文乱码问题的更多相关文章
- 解决Linux文档显示中文乱码问题以及编码转换
解决Linux文档显示中文乱码问题以及编码转换 解决Linux文档显示中文乱码问题以及编码转换 使vi支持GBK编码 由于Windows下默认编码是GBK,而linux下的默认编码是UTF-8,所以打 ...
- 【转】解决jsp参数传递乱码的问题
解决jsp参数传递乱码的问题 计算机生于美国,英语是他的母语,而英语以外的其它语言对他来说都是外语.他跟我们一样,不管外语掌握到什么程度,也不会像母语那样使用得那么好,时常也会出一些“拼写错误”问题. ...
- 彻底解决matplotlib中文乱码问题(转)
彻底解决matplotlib中文乱码问题 1.环境查看a.系统版本查看[hadoop@p168 ~]$ cat /etc/redhat-releaseCentOS Linux release 7.2. ...
- 彻底解决mysql中文乱码的办法 ???
MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin12.table的语系设定问题(包含character与collation)3.客户端程式(例如p ...
- 解决Eclipse中文乱码 - 技术博客 - 51CTO技术博客 http://hsj69106.blog.51cto.com/1017401/595598/
解决Eclipse中文乱码 - 技术博客 - 51CTO技术博客 http://hsj69106.blog.51cto.com/1017401/595598/
- 彻底解决mysql中文乱码的办法,修改mysql解压缩版(免安装版或zip版)字符编码
MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如server字符编码还停留在latin12.table的语系设定问题(包含character与collation)3.客 ...
- 解决 Android Studio 乱码问题
http://www.eoeandroid.com/thread-275485-1-1.html 很多同学都安装了Android Studio,但是发现中文是乱码,其实这个很好解决的.在IDE里点击F ...
- Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题
1 设置中文显示环境 1. 打开System Settings 2. 打开Personal-> Language Support. 会弹出如下对话框,提示你“语言支持没安装完整”. 点击“Rem ...
- Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题[转载]
转载自:http://www.cnblogs.com/zhcncn/p/4032321.html 写在前面:解决gedit 在txt文件格式出现乱码的问题,在我自己的操作中是需要把系统设置成中文显示环 ...
随机推荐
- iOS key value coding kvc在接收json数据与 model封装中的使用
iOS key value coding kvc在接收json数据与 model封装中的使用 使用 kvc 能够极大的简化代码工作,及以后的接口维护工作: 1:先创建MovieModel类.h和 . ...
- SQLSERVER常用计数器
复制下面全部--开始--运行--profmon.exe--性能监视器--粘贴计数器列表 <OBJECT ID="DISystemMonitor1" WIDTH="1 ...
- ZOJ 2604 Little Brackets DP
DP: 边界条件:dp[0][j] = 1 递推公式:dp[i][j] = sum{dp[i-k][j] * dp[k-1][j-1] | 0<k≤i} i对括号深度不超过j的,能够唯一表示为( ...
- bootstrap学习笔记一 登录水平表单
先上效果图: 样式定义: <form class="form-horizontal"> <div class="control-group"& ...
- angularJS使用内置服务
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...
- 百度地图和高德地图坐标系的互相转换 四种Sandcastle方法生成c#.net帮助类帮助文档 文档API生成神器SandCastle使用心得 ASP.NET Core
百度地图和高德地图坐标系的互相转换 GPS.谷歌.百度.高德坐标相互转换 一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记 ...
- jsp版本的环境变量集合
System.out.println("Protocol: " + request.getProtocol());System.out.println("Scheme: ...
- SUSE11SP3--安装svn
SUSE上安装新版本的subversion是一件很麻烦的事情,涉及到的依赖太多,包括需要更新部分工具的版本. 为了以较小的代价安装subversion,我决定在SUSE11下安装 subversion ...
- 【百度地图API】怎样制作多途经点的线路导航——驾车篇
摘要: 休假结束,酸奶小妹要从重庆驾车去北京.但是途中要去西安奶奶家拿牛奶饼干呢! 用百度地图API,能不能帮我实现这个愿望呢? ----------------------------------- ...
- C#笔试面试宝典值得收藏1
技术类面试.笔试题汇总 注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系. 下面的参考解答只是帮助大家理解,不用背,面试题.笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补 ...