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的作用详解编程语言

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

native2ascii的作用详解编程语言

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

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

native2ascii的作用详解编程语言

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

native2ascii的作用详解编程语言native2ascii的作用详解编程语言

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

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

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

native2ascii的作用详解编程语言

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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20271.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论