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

请教一个字符编码的问题(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就表示高字节在前还是低字节在前。