native2ascii用法说明

native2ascii用法

这个实际上不能完全归于java,native2ascii是个相当有用的工具,和语言无关,只是恰好放在了jdk下。

几年前看过网上的一篇文章讲native2ascii的用法(以native2ascii搜索,中文多半都是这一篇),以“熔岩”这两个汉字举例。
作者例子举的很详细,最后得出个结论:
“native2ascii -reverse命令中-encoding指定的编码为源文件的编码格式。而在native2ascii 命令中-encoding指定的编码为(生成的)目标文件的编码格式。这一点非常的重要!切记!!”
--------wjm:这个其实是错得.


当时自己也比较懵懂,只看了看gbk编码的怎么转成unicode能当properties用就行了。看了最后这句结论好像貌似有理。
最近正好用到琢磨了一下发现点问题,网上这篇广为流传得一篇文章,误导了很多人
看下面例子的第5条就是个反例。
对于例3,原作者说可以得到结论: -reverse命令中-encoding指定的编码为源文件的编码格式
但其实这个仍然是目标文件的编码,“熔岩”这两个汉字得gbk编码是c8db d1d2,而源文件中是\u00c8\u00db\u00d1\u00d2,同时
iso8859-1正好是一种一字节一字符的编码,以iso8859-1为目标编码正好转成c8db d1d2,我们打开时以gbk解析就看到正常看字了。

因此结论正好是相反的,这样就都说得通了:
“native2ascii -reverse命令中-encoding指定的编码为目标文件的编码格式。而在native2ascii 命令中-encoding指定的编码为源文件的编码格式。"

附原例子以及我的结论
1.  native2ascii [-encoding gbk] zh.txt i.txt
[GBK]熔岩------>\u7194\u5ca9
2.  native2ascii -encoding ISO8859-1 zh.txt i.txt
[GBK]熔岩------>\u00c8\u00db\u00d1\u00d2
wjm:源文件中是c8dbd1d2,他认为是iso8859-1,但恰好一字节一字符,转完就成目标哪样了
3.    native2ascii -encoding iso8859-1 -reverse i.txt  zh2.txt
\u00c8\u00db\u00d1\u00d2------>[GBK]熔岩
wjm:他的目标是iso8859-1,但恰好一字节一字符,我们打开开始正好是gbk编码的熔岩(即文件中是c8dbd1d2)
4.    native2ascii -encoding utf-8 zh.txt i.txt
[GBK]熔岩------>\ufffd\ufffd\ufffd\ufffd
5.native2ascii -reverse -encoding utf-8 i.txt  utf8.txt
\u7194\u5ca9------>[UTF-8]熔岩

附官方说明
http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/native2ascii.html

你可能感兴趣的:(jdk,html,oracle,windows)