求解关于JAVA中字符编码的问题
编译器H 2014-09-25 10:51:41 我们都知道JAVA中的char类型是占两个字节,如下:
public class getcharcode {
public static void main(String[] args){
String s = "A";
String r = "王";
System.out.println(s.getBytes().length);
System.out.println(r.getBytes().length);
Character a ='a';
Character b ='啊';
Integer c = 5;
System.out.println(a.SIZE);
System.out.println(b.SIZE);
System.out.println(c.SIZE);
}
}
输出的是1 2 16 16 32
为什么一个英文字符输出长度为1,而一个汉字输出长度为2,还是说一个英文字符占一个字节,一个汉字占两个字节
如果是这样的话,为什么英文和汉字所占的位数都是16???
还有如果每个字符占两个字节的话,关于DataOuputStream类的writeChars(String s)方法会将每个字符的两个字节都写到文本中,那为什么在文本中显示的是乱码只有字母能正常显示(字节都写进去了啊!!)