native2ascii的作用

为什么会有native2ascii?

java编译器或者其他文件java工具,只认识unicode编码的文件。这一点跟程序只能用英语、数字等编写的一样,否则编译不认识。我们知道,在现实世界中,存在着各种不同字符集编码方案,比如,gbk(中国大陆),big-5(台湾、香港、澳门),koi(俄罗斯),但是jvm只认识unicode字符(\udddd字样),所以,就存在native2ascii这么个工具了。

再反向思考一下,既然有  非Unicode---->Unicode,就有从  Unicode----->非Unicode,这个也是native2ascii工具的作用。


作用

我们理解了native2ascii存在的原因,也就知道了它的作用。它将非拉丁字符和非Unicode编码的文件,转码为Unicode编码(拉丁语序的字符)。当然,也包括从unicode转为非unicode。其实native2ascii,这个名字已经很好的概括它的作用了,native 2  ascii, 本地编码 到  ascii编码。

ascii编码,美国标准码交换信息,只包含数字、字母、英语表单符号。

注意,拉丁字符可以简单理解为,数字、字母、英语标点符号。


用法

非Unicode转Unicode:  native2ascii -encoding sourfile desitationfile

-encoding可以省略,默认是系统的编码。

sourfile可以省略,默认取自标准输入

desitationfile可以省略,默认取自标准输出,也就是控制台。

注意,此处的-encoding是指明源文件的编码,不是目的文件的编码,目的文件编码永远都是unicode(utf16),网上很多教程都说错了!


我们这里举个例子,test.txt是utf16编码,也就是“记事本”中的Unicode编码,里边只有一个汉字“哈”

native2ascii的作用_第1张图片


生成的test_unicode内容,跟控制台中的是一样的。我们发现native字符转为ascii字符了





Unicode转非Unicode,native2ascii -reverse -encoding sourefile destfile

注意,此处的-encoding是目标文件的编码。源文件肯定是unicode编码的,所以不用指定。

native2ascii的作用_第2张图片

我们观察生成的test_gbk.txt, test_utf8.txt内容,发现 ascii字符又转为native字符了



关于native2ascii -encoding sourefile destfile,中-encoding是指明源文件编码的,论证。

我分别转码utf8、gbk、utf16的test.txt文件,test.txt中,只有一个汉字“哈”,然后,将它转为ascii字符,转码正常。

小提示,我使用notepad++,菜单栏---->格式----->转为xx编码格式,可以很方便的实现,编码之间的切换。如果把-encoding理解为目标文件的编码肯定是错误的!


native2ascii的作用_第3张图片


官方对于native2ascii作用的说明 java doc native2ascii

你可能感兴趣的:(charset,encoding,javase)