通过构造函数将包含随机二进制数据的 byte[] 转换为 String 是否 100% 安全(异常/无错误):
new String(bytes);
// -- or --
new String(bytes,"UTF-8"); // Or other charset
我担心无效的 UTF-8 字节是否会导致异常或其他故障,而不仅仅是可能部分乱码的消息。
我尝试了一些已知的坏字节值,因为它们似乎按预期工作。例如:
byte[] bytes = new byte[] {'a','b','c',(byte)0xfe,(byte)0xfe,(byte)0xff,(byte)0xff,'d','e','f'};
String test = new String(bytes,"UTF-8");
System.out.println(test);
打印“abc????def”。
我担心某些其他组合是否会以其他意想不到的方式失败,因为我不能保证我可以测试每个无效组合。