请教一个字符编码的问题(unicode)
程序如下:
public class CharsetTest {
public static void main(String[] args)
{
String str = new String( "好 ");
byte[] bt = str.getBytes( "Unicode ");
for(int i=0;i <bt.length;i++)
{
System.out.println(bt[i]);
}
}
以上程序用Unicde字符集解码为字符序列时,会解码成4个字节,Unicode不是两个字节的编码的吗?
如果用GBK解码就没有问题。
请指教,谢谢!
------解决方案--------------------一般用Unicode编码会在前面多出两个字节,即FF、FE
如果你多加几个汉字,你会发现仍是多这两个字节,所以Unicode就是两个字节的
而gbk没有多加什么东西
------解决方案--------------------前面两个字节(0xFF 0xFE)可能是 Unicode 的前缀,不知道为什么会这样。
解码两个字时,是 6 个字节。
------解决方案--------------------补充下楼上的。
big endian和little endian是CPU处理多字节数的不同方式。例如“汉”字的Unicode编码是6C49。那么写到文件里时,究竟是将6C写在前面,还是将49写在前面?如果将6C写在前面,就是big endian。还是将49写在前面,就是little endian。
前面多的FFFE或者FEFF就表示高字节在前还是低字节在前。