字节数组的编码格式问题,求交流!!
public static void testUTF8() throws UnsupportedEncodingException{
byte[] bytes = {
(byte)128,
};
String str = new String(bytes, "UTF-8");
System.out.println((int)str.charAt(0));
}
这段代码在我机器里面输出竟然是65533, 我查看UTF-8的编码格式之后,还是不得其解
求解释,求交流
------解决方案--------------------首先,128不在byte的范围,强制转换会变成-1,试了一下,单独一个byte,只要是负数,经过String编码之后,都变成了-3(byte),String存储的是char,是整数范围,用int表示就是65533
------解决方案--------------------
搜索了一下,楼主看一下 http://my.oschina.net/joymufeng/blog/139952 讲得比较清晰