推荐Java:国际化编码解决.doc_第1页
推荐Java:国际化编码解决.doc_第2页
推荐Java:国际化编码解决.doc_第3页
推荐Java:国际化编码解决.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

背景:在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码。原因是java默认的编码方式为Unicode,而我们的计算机系统编码常常是GBK等编码。需要将系统的编码转换为java正确识别的编码问题就解决了。1、native2ascii简介:native2ascii是sun java sdk提供的一个工具。用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。为什么要进行转码,原因在于程序的国际化。Unicode编码的定义:Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。(声明:Unicode编码定义来自互联网)。2、获取native2ascii:安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会有一个bin目录,其中native2ascii.exe正是。3、native2ascii的命令行的命名格式:native2ascii -options inputfile outputfile说明: -options:表示命令开关,有两个选项可供选择-reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。-encoding encoding_name:转换为指定编码,encoding_name为编码名称。inputfile outputfileinputfile:表示输入文件全名。outputfile:输出文件名。如果缺少此参数,将输出到控制台。4、最佳实践:首先将JDK的bin目录加入系统变量path。在盘下建立一个test目录,在test目录里建立一个zh.txt文件,文件内容为:“熔岩”,打开“命令行提示符”,并进入C:test目录下。下面就可以按照说明一步一步来操作,注意观察其中编码的变化。A:将zh.txt转换为Unicode编码,输出文件到u.txtnative2ascii zh.txt u.txt打开u.txt,内容为“u7194u5ca9”。B:将zh.txt转换为Unicode编码,输出到控制台C:testnative2ascii zh.txtu7194u5ca9可以看到,控制台输出了“u7194u5ca9”。C:将zh.txt转换为ISO8859-1编码,输出文件到i.txtnative2ascii -encoding ISO8859-1 zh.txt i.txt打开i.txt文件,内容为“u00c8u00dbu00d1u00d2”。D:将u.txt转换为本地编码,输出到文件u_nv.txtnative2ascii -reverse u.txt u_nv.txt打开u_nv.txt文件,内容为“熔岩”。E:将u.txt转换为本地编码,输出到控制台C:testnative2ascii -reverse u.txt熔岩可以看到,控制台输出了“熔岩”。F:将i.txt转换为本地编码,输出到i_nv.txtnative2ascii -reverse i.txt i_nv.txt打开i_nv.txt文件,内容为“u00c8u00dbu00d1u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。G:将i.txt转换为GBK编码,输出到i_gbk.txtnative2ascii -reverse -encoding GBK i.txt i_gbk.txt打开i_gbk.txt文件,内容为“u00c8u00dbu00d1u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。H:将u_nv.txt转码到本地编码GBK,输出到控制台C:testnative2ascii -reverse -encoding ISO8859-1 i.txt熔岩从这个结果看,目标达到到了,编码i.txt为ISO8859-1,转为本地编码后内容为“熔岩”。从这里应该意识到,native2ascii -reverse命令中-encoding指定的编码为源文件的编码格式。而在native2ascii 命令中-encoding指定的编码为(生成的)目标文件的编码格式。这一点非常的重要!切记!继续探索,新建文件12a.txt,内容“12axyz”。看看纯字母数字的编码又如何。I:将纯字母数字的文本文件12a.txt转换为Unicode编码native2ascii 12a.txt 12a_nv.txt打开12a_nv.txt文件,内容为“12axyz”。继续测试,转为ISO8859-1编码看看C:testnative2ascii -encoding ISO8859-1 12a.txt12axyz结果还是没有转码。从结果可以得出结论:对于纯数字和字母的文本类型件,转码前后的内容是一样的。5、总结:native2ascii是一个非常的好转码工具,并且转码是可逆的!而其真正的含义并非本地编码转码为ASCII码,而是一个通用的文本文件编码转换工具。在做编码转换的时候有两类指定编码的情形,分别指输出文件编码和输入文件编码,具体可以看看最佳实践部分。 native2ascii -reverse -encoding encoding inputfile outputfile例子正转:To:Unicodenative2ascii Native2ASCII.properties Native2ASCII_zh_CN.properties反转:Reverse Unicode To 指定码native2ascii -reverse Native2ASCII_zh_CN.properties Native2ASCII_perties8859_1 ISO 8859-18859_2 ISO 8859-28859_3 ISO 8859-38859_4 ISO 8859-48859_5 ISO 8859-58859_6 ISO 8859-68859_7 ISO 8859-78859_8 ISO 8859-88859_9 ISO 8859-9Big5 Big5 码,繁体中文CNS11643 CNS 11643,繁体中文Cp037 美国、加拿大(两种语言,法语)、荷兰、葡萄牙、巴西、澳大利亚Cp1006 IBM AIX 巴基斯坦(乌尔都语)Cp1025 IBM 多语种西里尔语:保加利亚、波斯尼亚 黑塞哥维那、马其顿 (FYR)Cp1026 IBM Latin-5,土耳其Cp1046 IBM Open Edition US EBCDICCp1097 IBM 伊朗(波斯语)/波斯Cp1098 IBM 伊朗(波斯语)/波斯 (PC)Cp1112 IBM 拉脱维亚,立陶宛 Cp1122 IBM 爱沙尼亚Cp1123 IBM 乌克兰Cp1124 IBM AIX 乌克兰Cp1125 IBM 乌克兰 (PC)Cp1250 Windows 东欧Cp1251 Windows 斯拉夫语Cp1252 Windows Latin-1Cp1253 Windows 希腊Cp1254 Windows 土耳其Cp1255 Windows 希伯莱Cp1256 Windows 阿拉伯Cp1257 Windows 波罗的语Cp1258 Windows 越南语Cp1381 IBM OS/2, DOS 中华人民共和国 (PRC)Cp1383 IBM AIX 中华人民共和国 (PRC)Cp273 IBM 奥地利、德国Cp277 IBM 丹麦、挪威Cp278 IBM 芬兰、瑞典Cp280 IBM 意大利Cp284 IBM 加泰罗尼亚语/西班牙、拉丁美洲西班牙语Cp285 IBM 英国、爱尔兰 Cp297 IBM 法国Cp33722 IBM-eucJP - 日语 (5050 的超集)Cp420 IBM 阿拉伯Cp424 IBM 希伯莱Cp437 MS-DOS 美国、澳大利亚、新西兰、南非Cp500 EBCDIC 500V1Cp737 PC 希腊Cp775 PC 波罗的语Cp838 IBM 泰国扩展 SBCSCp850 MS-DOS Latin-1Cp852 MS-DOS Latin-2Cp855 IBM 斯拉夫语Cp857 IBM 土耳其语Cp860 MS-DOS 葡萄牙语Cp861 MS-DOS 冰岛语Cp862 PC 希伯莱Cp863 MS-DOS 加拿大法语Cp864 PC 阿拉伯语Cp865 MS-DOS 日尔曼语Cp866 MS-DOS 俄语Cp868 MS-DOS 巴基斯坦语Cp869 IBM 现代希腊语Cp870 IBM 多语种 Latin-2Cp871 IBM 冰岛语Cp874 IBM 泰国语Cp875 IBM 希腊语Cp918 IBM 巴基斯坦(乌尔都语)Cp921 IBM 拉脱维亚、立陶宛(AIX, DOS)Cp922 IBM 爱沙尼亚 (AIX, DOS)Cp930 与 4370 UDC 混合的日语,5026 的超集Cp933 与 1880 UDC 混合的韩文,5029 的超集Cp935 与 1880 UDC 混合的简体中文主机,5031 的超集 Cp937 与 6204 UDC 混合的繁体中文,5033 的超集Cp939 与 4370 UDC 混合的日语拉丁字母,5035 的超集Cp942 日语 (OS/2),932 的超集 Cp948 OS/2 中文(台湾),938 超集Cp949 PC 韩文Cp950 PC 中文(香港、台湾)Cp964 AIX 中文(台湾)Cp970 AIX 韩文EUCJIS JIS, EUC 编码、日语GB2312 GB2312, EUC 编码、简体中文GBK GBK, 简体中文ISO2022CN ISO 2022 CN, 中文ISO2022CN_CNS ISO-2022-CN 形式的 CNS 11643,繁体中文 ISO2022CN_GB ISO-2022-CN 形式的 GB 2312,简体中文ISO2022KR ISO 2022 KR, 韩文JIS JIS, 日语JIS0208 JIS 0208, 日语KOI8_R KOI8-R, 俄语KSC5601 KS C 5601, 韩文MS874 Windows 泰国语MacArabic Macintosh 阿拉伯语MacCentralEurope Macintosh Latin-2MacCroatian Macintosh 克罗地亚语MacCyrillic Macintosh 斯拉夫语MacDingbat Macintosh Dingb

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论