日期:2014-05-20  浏览次数:20927 次

java char占几个字节
一直认为java的char占2个字节,
FileWriter的write (int c)函数一直认为输出两个字节;
但今天测了下,结果和我想的不一样;

FileWriter fw =new FileWriter("test.txt");
char c1 ='你';
char c2='1';
int i=1;
fw.write(c1);
fw.write(c2);
fw.write(i);
fw.close();

输出我发现只有中文的占两个字节,其他输出都只有一个字节;好奇怪啊;
我的平台是xp 32位
java?char?write

------解决方案--------------------
java内存中char是两个字节,但是保存到文件中时另一回事,取决于文件的字符编码。
------解决方案--------------------
字符与二进制之间是有对应关系的。这个转换过程叫编码,逆过程叫解码。
Java语言,字符在内存中采用的是Unicode双字节定长编码。
但是,你要是输出到文件中,就会存在一个编码转换的过程。
一般WinXP系统,简体中文版的默认编码是GB2312编码,而不是Unicode编码,
并且,你在使用FileWriter对象的时候,并没有指定具体的编码,那么默认编码就是操作系统的默认编码。
所以,文件中的字符,采用的是GB2312编码,汉字占2个字节,ASCII字符占1个字节。