|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
- 发信人: 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
复制代码 |
|