String与byte转化要小心失真

String与byte转化要小心失真
先看一段代码:
byte  [] b  =   new   byte []{ 1 , - 1 , 2 , - 2 };
        System.out.println(Arrays.toString(
new  String(b).getBytes()));

输出:
[1, -17, -65, -67, 2, -17, -65, -67]
解释:
byte decode to String,String encode to byte 默认用UTF-8 charset.
decode遇到不支持的字符 输出 char � , encode � 就是 -17, -65, -67.
实现细节可见ByteToCharUTF8.java

解决办法: 使用 ISO8859_1 charset。

教训: 注意charset的范围。



你可能感兴趣的:(String与byte转化要小心失真)