读书人

java 编码转换工具 native2ascii (汉语

发布时间: 2012-12-20 09:53:21 作者: rapoo

java 编码转换工具 native2ascii (中文与Unicode等互转)使用小结

??????同事在开发项目时使用了eclipse国际化插件,他的目的就是处理乱码,这样一来,他输入中文,插件会给他自动转换为Unicode编码,形如:“\u51fa\u54c1\”,总监审查代码时看到这些异样符合颇为生气,说代码可读性差,要他改回来。还好他的中文都写在ApplicationResources_zh_CN.properties里面,问我有好方法没,呵呵,其实sun早就搞定了,用native2ascii 命令,不到1秒搞定。下面也总结下 native2ascii,这哥们真的蛮强地。

????? native2ascii 当然就是一个存在与jdk 的bin 目录下的native2ascii.exe文件了,你得把bin目录整到你环境?变量path里去,这不扯淡了,直奔主题:

???

native2ascii [options] [inputfile [outputfile]]

?
???? 查官方api文档,命令如下:

?

????????????????????????????????????
?????官方对参数的解释也清晰简单,这里就不贴原文了,用自己语言描述下:

?

?

首先,[oprions],有如下两个命令可以选择:

?

?“-reverse” :????? 将Latin-1或者Unicode编码转换为本地代码。(就是形如: \u4f60\u597d -->你好 )


?“-encoding encoding_name”:将本地编码转换为Latin-1或Unicode编码,如: -encoding gbk
???????????????????????????????????? ???? (就是: 你好--》\u4f60\u597d),当然也可跟-reverse命令配合使用,

?????????????????????????????????????????? ?来指定-reverse 的源文件编码方式。后面具体描述。


其次,[inputfile [outputfile]]

?

??? inputfile,? 你懂地,输入文件。如果没有输入文件,你在控制台输入点字符串也可以。
??? outputfile,你更懂,输出文件嘛。如果不输的话,它会给你在控制台打出结果。

?

最后,啥也不说了,来点实际的:

?

1、将一个全是中文的文本文件 a.txt (内容为:“你好!” ,你可以用其他格式的文件) 转为 Unicode:

?

???????

?

native2ascii a.txt 

??

???? (备注:其实是? native2ascii -encoding Unicode a.txt?? ,因为java默认是unicode编码,故略写了)

结果如下图1所示:?


???????????????????????????????????? java 编码转换工具 native2ascii (汉语与Unicode等互转)使用小结

?????????????????????????????????????????????????????? 图1:将中文转unicode

2、将中文文件a.txt 转换成Unicode编码后,输出到目标文件b.txt中:
?
??

native2ascii a.txt b.txt 

?

结果如下图2所示:


???????????????????????????????? java 编码转换工具 native2ascii (汉语与Unicode等互转)使用小结

????????????????????????????????? 图2:将文件转换为unicode后输出到目标文件

?

3、将中文文件转换为其他编码,如通用的 iso8859-1,输出到iso.txt :

???

native2ascii -encoding ISO8859-1 a.txt iso.txt 

?

??? 结果如下图3:


?????????????????????????? java 编码转换工具 native2ascii (汉语与Unicode等互转)使用小结

???????????????????????????????????????????? 图3:将中文文件转换为iso8859-1格式

???? 同理,你可以转换为gbk,utf-8等,但在这里的编码必须是支持的编码,了解更多支持的编码请查阅官方文档:

?????

?????????? ?http://download.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html

?

?

4、使用-reverse命令,将Unicode编码逆转为本地编码,输出在控制台:

?

????

 native2ascii -reverse b.txt

?

结果:

??????
????????????????? java 编码转换工具 native2ascii (汉语与Unicode等互转)使用小结

?

5、使用-reverse -encoding encoding_name 将其他形式编码转换为本地编码


????

 native2ascii -reverse  -encoding ISO8859-1  iso.txt

结果:


java 编码转换工具 native2ascii (汉语与Unicode等互转)使用小结
??

?

说明:??? 因为我们在3中使用了-encoding命令来指定输出文件的编码为iso8859-1,就不再是系统默认的Unicode编码了,所以,在要把它转换为本地编码时,需要给它赋编码。如果不给他赋-encoding命令,而直接使用如下命令:

??????

native2ascii -reverse  iso.txt  

?我们将看到结果如下:
?
??????????????????? java 编码转换工具 native2ascii (汉语与Unicode等互转)使用小结

跟输入文件iso.txt里面的内容一样,没有转换过来。

?

?

总结:

?????????????? 要将一个本地编码文件转换为其他格式编码,(形如:?? 你好 --->\u4f60\u597d )采用

????????

 native2ascii -encoding encoding_name  inputfile 

?

???????????? ?要将其他编码格式的文件转换为本地编码,( 形如:\u4f60\u597d -->你好)采用:

?

native2ascii  -reverse -encoding encoding_name inputfile

?

因为 java 默认是Unicode编码,

?

??????????????故“?native2ascii? inputfile”? 命令等价于“?native2ascii -encoding Unicode inputfile”,??????????

??????????????

????? "?native2ascii -reverse?inputfile??"?等价于 native2ascii? -reverse -encoding Unicode?inputfile

?

所以,平时在使用中如果默认的话,都把 -encoding encoding_name 参数省去,以示简洁。??
??


?

?

?

?

?

读书人网 >编程

热点推荐