求助:Java字符集问题
有如下有关字符集转换的代码段:
byte[] buf ={ (byte)0x81,(byte)0x40,(byte)0xb0,(byte)0xa1 };
//将二进制数据按照GB2312向Unicode编码转换
String str = new String(buf,"GB2312");
for(int i = 0; i < str.length() ; i++)
{
char ch = str.charAt(i);
//将该字符对应的Unicode编码以十六进制的形式输出
System.out.print(Integer.toHexString((int)ch));
System.out.print("--");
System.out.println(ch);
}
程序的最终输出结果是:
fffd--?
40--@
554a--啊
我的不明白的地方是:
四个字节的buf,转换后为什么str的长度会是3,这个过程的转换机制是怎么样的?如何对应起来,最好能够帮忙详细解答一下,谢谢。