Unicode

Java字符编码与Unicode字符集

昨天某人问我Java中如下代码的输出结果为什么不一样(”A”为1,”一”为2)?

1
System.out.println("A".getBytes().length+"\t"+"一".getBytes().length);
1	2

咋一看,好像是不对劲,Java中的字符不都是Unicode编码(16bit,2字节)的吗?怎么英文字母只占1字节呢?于是立马查看《Java编程思想(Thinking in Java)第四版》,关于常用类型的基本信息表(见“第二章-一切都是对象”,“2.2.2-特例:基本类型”,第23页)里赫然写着char的大小为16bit的Unicode。于是断定问题出在getBytes函数上。