1-1-16-1-7 java的中文问题的一点点研究
发信人: lithium (lithium), 信区: Java
标题: java的中文问题的一点点研究
发信站: BBS 水木清华站 (Fri Jun 29 15:26:27 2001)
我知道java的中文问题已经研究烂了,精华区我也看,可还是没有彻底理解。
只好自己动手做了一下实验,发现:
中文在源文件中为GB2312编码 --> 内存中为 unicode 编码 --> class文件中为UTF-8编码
实验过程如下:
写一个最简单的class
public class Test
{
public static void main(String[] args){
String str = "aaaaaaaaaaaaaaa大aaaaaaaaaaaaaaa";
System.out.println(str);
}
}
那么多a是为了定位汉字在文件中的位置。
用 javac -encoding GBK 进行编译
class文件中的"大"字变成他的UTF-8编码。反编译,“大”字变成了"\u5927",
是他的unicode编码。
用javac -encoding iso-8859-1进行编译
class文件中"大"字变成了四个字节,其实就是他的GB2312编码拆分成两个字节,
再分别进行UTF-8编码。
至此,我也终于明白的-encoding参数作用,就是按照指定的编码方式去编译源文件。
只要编译时的编码方式与操作系统的内码相同,就可以正常显示。
附:
"大"字的编码
GB2312 B4 F3
unicode 59 27
UTF-8 E5 A4 A7
"大"字的GB编码拆分为两个byte
B4的UTF-8编码 C2 B4
F3的UTF-8编码 C3 B3
页:
[1]