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://www.songhu9.com.cn
- QQ:316675593,电话号码:19807655856
- 业务范围:公司网站建设、管理软件研发、软件网站二次开发、400电话、电商平台研发、公众号研发!
- 免责申明:本站内容均来源于网络,版权归原创所有,如有任何版权方面的问题,请与我们联系处理!