`
Vicent_Lee
  • 浏览: 56632 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

支持国际化转码

阅读更多

 

 

 

jar cvf fileName1 fileName2,fileName3....

 

该命令将文件进行压缩打包,fileName1 是压缩打包后的文件名,fileName2,fileName3.....是需要打包起来文件名,可以多个文件打包到一起

 

native2ascii

 

native2ascii.exe 是 Java 的一个文件转码工具,是将特殊各异的内容 转为 用指定的编码标准文体形式统一的表现出来,它通常位于 JDK_home\bin 目录下,安装好 Java SE 后,可在命令行直接使用 native2ascii 命令进行转码,示例:

 

native2ascii -encoding 8859_1 c:\test.txt c:\temp.txt

将 test.txt 文件内容用 8859_1 转码,另存为 temp.txt 文件

格式:native2ascii -[options] [inputfile [outputfile]]

 

参数选项 options 

-reverse:将 Latin-1 或 Unicode 编码转为本地编码

-encoding encoding_name:指定转换时使用的编码

inputfile:要转换的文件

outputfile:转换后的文件

 

互转(-encoding,非英文内容(如中文)转为编码符 或 编码符之间的转换),

逆转(-reverse,通常是将编码符转为非英文内容,或非英文内容之间的转换),

逆转时被转的文件编码和本地编码需一致,示例:

 

中文转为 ISO 8859_1 编码后,将 8859_1 码转为中文:

native2ascii -encoding 8859_1 c:\a.txt c:\b.txt,将 a 用 8859_1 转码,存为 b (8859_1 码)

native2ascii -encoding GBK c:\b.txt c:\c.txt,将 b 用 GBK 转码,存为 c (GBK 码)

native2ascii -reverse c:\c.txt c:\d.txt,将 GBK 编码 c 用本地编码转码,存为 d (中文内容)

 

中文转为 GBK 编码后,将 GBK 码转为中文:

native2ascii -encoding GBK c:\a.txt c:\b.txt,将 a 用 GBK 转码,存为 b (GBK 码)

native2ascii -reverse c:\b.txt c:\c.txt,将 GBK 编码 b 用本地编码转码,存为 c (中文内容)

 

例如struts和struts2中的国际化utf-8的转换方式:

native2ascii -encoding UTF-8 ApplicationResources_zh_src.properties ApplicationResources_zh.properties

 

注:可在eclipse中创建一个properties文件、直接在properties下直接键入中文字符、再切换到source下即可看见转换后的字符。

 

常见编码列表:
8859_1             ISO 8859-1
8859_2             ISO 8859-2
8859_3             ISO 8859-3
8859_4             ISO 8859-4
8859_5             ISO 8859-5
8859_6             ISO 8859-6
8859_7             ISO 8859-7
8859_8             ISO 8859-8
8859_9             ISO 8859-9
Big5               Big5 码,繁体中文
CNS11643           CNS 11643,繁体中文
Cp037              美国、加拿大(两种语言,法语)、荷兰、葡萄牙、巴西、澳大利亚
Cp1006             IBM AIX 巴基斯坦(乌尔都语)
Cp1025             IBM 多语种西里尔语:保加利亚、波斯尼亚 、黑塞哥维那、马其顿 (FYR)
Cp1026             IBM Latin-5,土耳其
Cp1046             IBM Open Edition US EBCDIC
Cp1097             IBM 伊朗(波斯语)/波斯
Cp1098             IBM 伊朗(波斯语)/波斯 (PC)
Cp1112             IBM 拉脱维亚,立陶宛
Cp1122             IBM 爱沙尼亚
Cp1123             IBM 乌克兰
Cp1124             IBM AIX 乌克兰
Cp1125             IBM 乌克兰 (PC)
Cp1250             Windows 东欧
Cp1251             Windows 斯拉夫语
Cp1252             Windows Latin-1
Cp1253             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 500V1
Cp737              PC 希腊
Cp775              PC 波罗的语
Cp838              IBM 泰国扩展 SBCS
Cp850              MS-DOS Latin-1
Cp852              MS-DOS Latin-2
Cp855              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-2
Cp871              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-2
MacCroatian        Macintosh 克罗地亚语
MacCyrillic        Macintosh 斯拉夫语
MacDingbat         Macintosh Dingbat
MacGreek           Macintosh 希腊语
MacHebrew          Macintosh 希伯莱语
MacIceland         Macintosh 冰岛语
MacRoman           Macintosh 罗马语
MacRomania         Macintosh 罗马尼亚语
MacSymbol          Macintosh 符号
MacThai            Macintosh 泰国语
MacTurkish         Macintosh 土耳其语
MacUkraine         Macintosh 乌克兰语
SJIS               Shift-JIS, 日语
UTF8               UTF-8

分享到:
评论
2 楼 Vicent_Lee 2011-05-09  
native2ascii -encoding utf-8 c:\aa.properties c:\zh.txt
native2ascii -reverse -encoding utf-8 c:\utf8.txt>c:\zh.txt
1 楼 Vicent_Lee 2011-05-09  
背景:在做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 [outputfile]]
inputfile:表示输入文件全名。
outputfile:输出文件名。如果缺少此参数,将输出到控制台。
4、最佳实践:首先将JDK的bin目录加入系统变量path。在盘下建立一个test目录,在test目录里建立一个zh.txt文件,文件内容为:“熔岩”,打开“命令行提示符”,并进入C:\test目录下。下面就可以按照说明一步一步来操作,注意观察其中编码的变化。

A:将zh.txt转换为Unicode编码,输出文件到u.txt
native2ascii zh.txt u.txt
打开u.txt,内容为“\u7194\u5ca9”。
B:将zh.txt转换为Unicode编码,输出到控制台
C:\test>native2ascii zh.txt
\u7194\u5ca9
可以看到,控制台输出了“\u7194\u5ca9”。
C:将zh.txt转换为ISO8859-1编码,输出文件到i.txt
native2ascii -encoding ISO8859-1 zh.txt i.txt
打开i.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。
D:将u.txt转换为本地编码,输出到文件u_nv.txt
native2ascii -reverse u.txt u_nv.txt
打开u_nv.txt文件,内容为“熔岩”。
E:将u.txt转换为本地编码,输出到控制台
C:\test>native2ascii -reverse u.txt
熔岩
可以看到,控制台输出了“熔岩”。
F:将i.txt转换为本地编码,输出到i_nv.txt
native2ascii -reverse i.txt i_nv.txt
打开i_nv.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。。

G:将i.txt转换为GBK编码,输出到i_gbk.txt
native2ascii -reverse -encoding GBK i.txt i_gbk.txt
打开i_gbk.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。

H:将u_nv.txt转码到本地编码GBK,输出到控制台
C:\test>native2ascii -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:\test>native2ascii -encoding ISO8859-1 12a.txt
12axyz
结果还是没有转码。
从结果可以得出结论:对于纯数字和字母的文本类型件,转码前后的内容是一样的。

5、总结:native2ascii是一个非常的好转码工具,并且转码是可逆的!而其真正的含义并非本地编码——>转码为ASCII码,而是一个通用的文本文件编码转换工具。在做编码转换的时候有两类指定编码的情形,分别指输出文件编码和输入文件编码,具体可以看看最佳实践部分。
实际应用中:
比如可以这样利用native2ascii:
native2ascii -encoding gbk     temp.properties    application_zh_CN.properties
    这里将根据一个临时文件temp.properties输出了application_zh_CN.properties,然后把application_zh_CN.properties中的文件内容替换这个临时文件的内容就可以了。

相关推荐

    国际化字符转码_国际化

    国际化字符转码是IT领域中一个重要的概念,特别是在软件开发和网页设计中,因为全球化的市场需求使得软件和服务需要支持多种语言和字符集。这个过程涉及到将不同编码格式的字符转换成统一的标准,以便在不同的系统和...

    编码转换(制作国际化网站时用)

    为了实现良好的国际化支持,开发者还需要了解Unicode,这是一个包含世界上大部分字符的通用字符集。UTF-8是Unicode的一种实现,它已经成为互联网上最广泛使用的字符编码。通过理解Unicode和各种UTF(如UTF-8、UTF-16...

    java国际化中文乱码问题解决包

    Java 国际化(i18n)是让软件能够适应不同语言和地区的过程,而中文乱码问题在处理多语言支持时经常遇到。`ResourceBundle` 是 Java 中用于管理国际化资源的关键类,它允许开发者存储特定语言环境下的文本、消息和...

    ascii编码转码工具

    Struts框架,是一个基于MVC设计模式的Java Web应用框架,它极大地简化了开发过程并提供了国际化支持。通过Struts框架,开发者可以很容易地实现在不同语言环境下的应用,为用户提供多语言界面。在Struts中,处理字符...

    云转码上传客户端

    6. **国际化支持**:icudtl.dat文件通常是Unicode的国际化和本地化数据,为应用程序提供全球范围的语言和区域设置支持。 总的来说,"云转码上传客户端"是一个综合了云服务、多媒体处理、客户端应用开发、网络通信...

    批量文件转码工具(支持GBK,UTF-8转换)

    GBK编码是中国大陆广泛使用的汉字编码标准,它扩展了GB2312,包含了更多的汉字和符号,但在处理国际化字符时可能会遇到问题。相比之下,UTF-8是一种更为通用的Unicode编码方式,能够表示世界上几乎所有的字符,因此...

    批量文件转码工具(支持 GBK,UTF-8 转换)

    - 国际化:在开发多语言软件时,将GBK编码的中文资源转换为UTF-8以支持其他语言。 在提供的压缩包中,包含了一个名为"批量文件转码工具(支持GBK,UTF-8 转换).pdf"的文件,这很可能是该工具的用户手册或说明文档。...

    Eclipse编辑国际化资源文件插件 PropertiesEditor和jinto

    在软件开发过程中,尤其是涉及到多语言支持的时候,国际化(Internationalization)和本地化(Localization)是必不可少的步骤。Eclipse作为一款广泛使用的Java IDE,提供了丰富的插件支持,以帮助开发者更加高效地...

    jvm字符转码

    4. **国际化(Internationalization)**:为了支持多语言环境,Java提供了`java.nio.charset`包,其中包含了各种字符编码类,如`Charset`, `CharsetDecoder`和`CharsetEncoder`,方便进行字符转码操作。 5. **异常...

    视频转码服务

    相反,MP4(MPEG-4 Part 14)是一种国际标准化的、广泛应用的容器格式,支持各种视频和音频编码,兼容各种设备,包括智能手机、平板电脑和智能电视。 2. 视频转码:视频转码是指将视频文件从一种编码格式转换为另一...

    java转码工具类

    1. **国际化项目**:在开发面向国际用户的应用时,可能需要支持多种语言和字符集,这时就需要使用这样的工具来确保文件编码的一致性和正确性。 2. **数据迁移**:在进行数据迁移或导入导出操作时,可能会遇到编码不...

    项目转码工具

    UTF-8编码是一种广泛采用的Unicode字符编码方案,它可以兼容世界上大部分语言的文字,因此在编程领域非常常见,尤其在处理国际化和本地化问题时。 在Android开发中,开发者可能会遇到各种各样的编码问题。例如,源...

    中文域名转码asp版 1.0.rar

    这种转换过程通常涉及到IDN(国际化域名)技术和punycode编码。 ASP(Active Server Pages)是一种由微软开发的服务器端脚本环境,允许开发人员在网页上动态生成内容。在这个ASP版的中文域名转码程序中,开发者可能...

    转码TMPGEnc PLUS 2.58

    3. **多语言支持**:TMPGEnc支持多种语言,方便不同地区的用户使用,这在国际化的软件环境中尤为重要。 4. **预设设置**:提供多种预设的编码设置,用户可以根据目标设备或用途选择合适的配置,快速完成转码工作。 ...

    js字符集转码函数

    2. **国际化应用开发**:在支持多种语言的应用程序中,确保文本正确显示。 3. **数据处理与清洗**:在处理包含不同字符集编码的数据时,进行统一转换。 ### 总结 这些函数提供了一个完整的解决方案,能够帮助...

    unicode转码工具

    描述中提到的“一般用来做国际化的”,意味着这种工具特别适用于处理多语言环境下的文本。国际化(Internationalization)是软件设计的一个重要方面,它使软件能够适应不同的语言和文化环境。Unicode转码工具能够...

    中文域名转码ASP组件

    中文域名转码的关键在于Punycode技术,这是国际化域名(IDN)系统的一部分。Punycode是一种编码方法,能将Unicode字符串(如中文字符)转换为纯ASCII字符串,而ASCII是互联网上广泛使用的字符集。通过这个组件,...

    取色器 转码器

    在处理国际化的网站、软件或数据库时,理解Unicode和如何转换编码至关重要。 在实际应用中,程序员可能需要编写代码来实现自动转码,例如在读取不同编码的文件或将数据从一种系统迁移到另一种系统时。此外,对于...

    批量转码攻击

    GBK编码是中国大陆广泛使用的字符集,包含了大部分简体中文字符,而UTF-8是一种国际化的编码标准,能够表示世界上几乎所有的字符,包括繁体中文、日文、韩文等。在处理跨平台或跨国项目时,选择正确的编码方式是至关...

Global site tag (gtag.js) - Google Analytics