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