1.java String由char组成,从String中的函数CharAt(int index)便可知
2.String类中存放的是UNICODE编码,每个Char是16位,一个Char可能是传统的ASCII字符,也可能是一个汉字,在内存中都 是占据两个字节
3.String类和Byte[]之间的关系
String s = new String("霜之哀伤");
byte[] array1 = s.getBytes("utf-8");
byte[] array2 = s.getBytes("gbk");
byte[] array3 = s.getBytes("unicode");
byte[] array4 = s.getBytes();// 默认是GBK
printBytes(array1);
printBytes(array2);
printBytes(array3);
printBytes(array4);
程序输出:
0xE9 0x9C 0x9C 0xE4 0xB9 0x8B 0xE5 0x93 0x80 0xE4 0xBC 0xA4
0xCB 0xAA 0xD6 0xAE 0xB0 0xA7 0xC9 0xCB
0xFE 0xFF 0x97 0x1C 0x4E 0x4B 0x54 0xC0 0x4F 0x24
0xCB 0xAA 0xD6 0xAE 0xB0 0xA7 0xC9 0xCB
我认为在String里面的中文是以UNICODE的方式进行存储,根据不同的编码方式,返回不同的byte数组。
而对于给定的一个byte buffer,我们也可以不同的编码方式进行解析,如String s=new String(buffer,"utf-8");
从而对于不同格式的文本文件,我们以二进制的方式读入,然后以自定义的编码格式显示,如果编码格式匹配就能正确显示文本内容。
转自: http://blog.csdn.net/wuyanqing_2006/archive/2009/07/26/4382362.aspx