﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Toad</title><link>http://www.blogjava.net/seawind0106/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 14 May 2026 09:55:14 GMT</lastBuildDate><pubDate>Thu, 14 May 2026 09:55:14 GMT</pubDate><ttl>60</ttl><item><title>JDK自带的native2ascii工具 </title><link>http://www.blogjava.net/seawind0106/archive/2009/05/16/270984.html</link><dc:creator>胡浩</dc:creator><author>胡浩</author><pubDate>Sat, 16 May 2009 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/seawind0106/archive/2009/05/16/270984.html</guid><wfw:comment>http://www.blogjava.net/seawind0106/comments/270984.html</wfw:comment><comments>http://www.blogjava.net/seawind0106/archive/2009/05/16/270984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/seawind0106/comments/commentRss/270984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/seawind0106/services/trackbacks/270984.html</trackback:ping><description><![CDATA[<span style="font-size: 14pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br style="font-family: " />
1、native2ascii简介：<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;native2ascii是sun java sdk提供的一个工具。用来将别的文本类文件（比如*.txt,*.ini,*.properties,*.java等等）编码转为Unicode编码。为什么要进行转码，原因在于程序的国际化。Unicode编码的定义：Unicode（统一码、万国码、单一码）是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码，以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发，1994年正式公布。随着计算机工作能力的增强，Unicode也在面世以来的十多年里得到普及。<br />
<br style="font-family: " />
2、获取native2ascii：<br style="font-family: " />
&nbsp;&nbsp;&nbsp;安装了jdk后，假如你是在windows上安装，那么在jdk的安装目录下，会有一个bin目录，其中native2ascii.exe正是。<br style="font-family: " />
<br style="font-family: " />
3、native2ascii的命令行的命名格式：<br style="font-family: " />
native2ascii -[options] [inputfile [outputfile]]<br style="font-family: " />
<br style="font-family: " />
说明：<br style="font-family: " />
-[options]：表示命令开关，有两个选项可供选择<br style="font-family: " />
-reverse：将Unicode编码转为本地或者指定编码，不指定编码情况下，将转为本地编码。<br style="font-family: " />
-encoding encoding_name：转换为指定编码，encoding_name为编码名称。<br style="font-family: " />
<br style="font-family: " />
[inputfile [outputfile]]<br style="font-family: " />
inputfile：表示输入文件全名。<br style="font-family: " />
outputfile：输出文件名。如果缺少此参数，将输出到控制台。<br style="font-family: " />
<br style="font-family: " />
<br style="font-family: " />
4、最佳实践：<br style="font-family: " />
&nbsp;&nbsp;&nbsp;首先将JDK的bin目录加入系统变量path。在盘下建立一个test目录，在test目录里建立一个zh.txt文件，文件内容为：&nbsp;&nbsp;&nbsp;&nbsp;<br />
&#8220;熔岩&#8221;，打开&#8220; 命令行提示符&#8221;，并进入C:\test目录下。下面就可以按照说明一步一步来操作，注意观察其中编码的变化。<br style="font-family: " />
<br style="font-family: " />
A：将zh.txt转换为Unicode编码，输出文件到u.txt<br style="font-family: " />
native2ascii zh.txt u.txt<br style="font-family: " />
打开u.txt，内容为&#8220;\u7194\u5ca9&#8221;。<br style="font-family: " />
<br style="font-family: " />
B：将zh.txt转换为Unicode编码，输出到控制台<br style="font-family: " />
C:\test&gt;native2ascii zh.txt<br style="font-family: " />
\u7194\u5ca9<br style="font-family: " />
可以看到，控制台输出了&#8220;\u7194\u5ca9&#8221;。<br style="font-family: " />
<br style="font-family: " />
C：将zh.txt转换为ISO8859-1编码，输出文件到i.txt<br style="font-family: " />
native2ascii -encoding ISO8859-1 zh.txt i.txt<br style="font-family: " />
打开i.txt文件，内容为&#8220;\u00c8\u00db\u00d1\u00d2&#8221;。<br style="font-family: " />
<br style="font-family: " />
D：将u.txt转换为本地编码，输出到文件u_nv.txt<br style="font-family: " />
native2ascii -reverse u.txt u_nv.txt<br style="font-family: " />
打开u_nv.txt文件，内容为&#8220;熔岩&#8221;。<br style="font-family: " />
<br style="font-family: " />
E：将u.txt转换为本地编码，输出到控制台<br style="font-family: " />
C:\test&gt;native2ascii -reverse u.txt<br style="font-family: " />
熔岩<br style="font-family: " />
可以看到，控制台输出了&#8220;熔岩&#8221;。<br style="font-family: " />
<br style="font-family: " />
F：将i.txt转换为本地编码，输出到i_nv.txt<br style="font-family: " />
native2ascii -reverse i.txt i_nv.txt<br style="font-family: " />
打开i_nv.txt文件，内容为&#8220;\u00c8\u00db\u00d1\u00d2&#8221;。发现转码前后完全一样的。也就是说，等于没有转，或者说思想糊涂，对命名没有理解。<br style="font-family: " />
<br style="font-family: " />
G：将i.txt转换为GBK编码，输出到i_gbk.txt<br style="font-family: " />
native2ascii -reverse -encoding GBK i.txt i_gbk.txt<br style="font-family: " />
打开i_gbk.txt文件，内容为&#8220;\u00c8\u00db\u00d1\u00d2&#8221;。发现转码前后完全一样的。也就是说，等于没有转，或者说思想糊涂，对命名没有理解。<br style="font-family: " />
<br style="font-family: " />
H：将u_nv.txt转码到本地编码GBK，输出到控制台<br style="font-family: " />
C:\test&gt;native2ascii -reverse -encoding ISO8859-1 i.txt<br style="font-family: " />
熔岩<br style="font-family: " />
从这个结果看，目标达到到了，编码i.txt为ISO8859-1，转为本地编码后内容为&#8220;熔岩&#8221;。从这里应该意识到，native2ascii -reverse命令中-encoding指定的编码为源文件的编码格式。而在native2ascii 命令中-encoding指定的编码为（生成的）目标文件的编码格式。这一点非常的重要！切记！！<br style="font-family: " />
<br style="font-family: " />
继续探索，新建文件12a.txt，内容&#8220;12axyz&#8221;。看看纯字母数字的编码又如何。<br style="font-family: " />
<br style="font-family: " />
I：将纯字母数字的文本文件12a.txt转换为Unicode编码<br style="font-family: " />
native2ascii 12a.txt 12a_nv.txt<br style="font-family: " />
打开12a_nv.txt文件，内容为&#8220;12axyz&#8221;。<br style="font-family: " />
继续测试，转为ISO8859-1编码看看<br style="font-family: " />
C:\test&gt;native2ascii -encoding ISO8859-1 12a.txt<br style="font-family: " />
12axyz<br style="font-family: " />
结果还是没有转码。<br style="font-family: " />
<br style="font-family: " />
从结果可以得出结论：对于纯数字和字母的文本类型文件（只有ASCII码），转码前后的内容是一样的。<br style="font-family: " />
<br style="font-family: " />
5、总结：<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp; native2ascii是一个非常的好转码工具，并且转码是可逆的！而其真正的含义并非本地编码——&gt;转码为ASCII码，而是一个通用的文本文件编码转换工具。在做编码转换的时候有两类指定编码的情形，分别指输出文件编码和输入文件编码<wbr style="font-family: ">|xGv00|fcc8d4de8197f69fde70263fb4d52380 </span>
<img src ="http://www.blogjava.net/seawind0106/aggbug/270984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/seawind0106/" target="_blank">胡浩</a> 2009-05-16 11:17 <a href="http://www.blogjava.net/seawind0106/archive/2009/05/16/270984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>