字符编码


native2ascii的用法
Sun也太吝啬了,也不多给点使用例子.
它的帮助只有:用法:native2ascii [-reverse] [-encoding 编码] [输入文件 [输出文件]]

下边是网上找的说明,说的不是很清楚:
----------------------------------------------------------------------------------
说明

Java 编译器和其它 Java 工具只能处理含有 Latin-1 和/或 Unicode 编码(\udddd
记号)字符的文件。native2ascii 将含有其它字符编码的文件转换成含 Latin-1 和/或
Unicode 编码字符的文件。

若省略 outputfile,则使用标准输出设备输出。此外,如果也省略
inputfile,则使用标准输入设备输入。

选项

-reverse 执行相反的操作:将含 Latin-1 和/或 Unicode
编码字符的文件转换成含本地编码字符的文件:

-encoding encoding_name 指定转换程序使用的编码名称。预设的编码从系统属性
file.encoding 中得到。encoding_name 字符串必须是下表第一栏所示的字符串。

-------------------------------------------------------------------------------------

--以下是我实践后总结的--
native2ascii命令的用法:

只有一种类型编码,可以说文本文件编码和文本内容编码指的是同一个意思。
建议理解成文本文件编码(看第四).

结论:
      1.这里说的16进制的字符是本地编码的字符的16进制字符表示。
      2.utf-8编码(有本地字符)和ANSI编码(有本地字符)的文件转成ANSI编码的本地字符的16进制字符表示是一样的。
      3.utf-8编码(有本地字符)的文件要转成ANSI编码的(本地字符)的文件,要先转成ANSI编码的16进制字符文件,之后再转成ANSI编码的本地字符的文件。
      4.前提是这个16进制的字符必须代表一个本地字符.

疑问:难道没有转换utf-8编码的本地字符文件转为utf-8编码的16进制字符表示的方法?!它和ANSI编码表示的
            16进制一样吗?

一、把ANSI编码的本地字符文件转成ANSI编码的16进制文件再转回来。
两步走:
1.native2ascii -encoding gbk [ANSI编码文件,显示ANSI本地字符] [ANSI编码文件,即显示ANSI本地编码字符的十六进制字符]
2.native2ascii -reverse [ANSI编码文件,即显示ANSI本地编码字符的十六进制字符] [ANSI编码文件,即ANSI本地字符]

二、把ANSI编码的本地字符(或16进制字符)文件转成utf-8编码的本地字符文件。
>native2ascii -reverse -encoding utf-8 [ANSI编码文件,即ANSI本地字符] [UTF-8编码文件]
>native2ascii -reverse -encoding utf-8 [ANSI编码文件,即显示ANSI本地编码字符的十六进制字符] [UTF-8编码文件]

三、把utf编码的文件(显示本地字符),转成ANSI编码的文件。
两步走:
1.先转成ANSI编码的十六进制字符文件
  native2ascii -encoding utf-8 [UTF-8编码文件] [ANSI编码文件,即显示ANSI本地编码字符的十六进制字符]
2.再转成ANSI编码的本地字符文件。
  native2ascii -reverse [ANSI编码文件,即显示ANSI本地编码字符的十六进制字符] [ANSI编码文件,即ANSI本地字符]

四、如果是utf编码的文件,有本地字符的16进制的话,想转成ANSI编码的本地字符表示。
  用native2ascii的话是不行的.
  只能用记事本把文件编码类型另存为ANSI编码的16进制的文件,之后执行第一步.


有时间弄个gbk转utf的批处理。

你可能感兴趣的:(sun)