文章迁移:具体内容点击这里
送上小小经验:
1、被压缩的字符长度不足会导致压缩后比压缩前的数据更大:例如 压缩前字节长度为:10,压缩后字节长度为:48
2、字符编码问题:将byte[] 数组 转String,再将String 转回 byte[] 前后 byte 不一致问题。
// 示例1:异常
byte[] bytes1 = {31, -117, 8, 0};
String byStr = new String(bytes1);
byte[] bytes2 = byStr.getBytes();
System.out.println(Arrays.toString(bytes2));
// 输出 byte2 结果为: [31, -17, -65, -67, 8, 0]
// 示例2:正常
byte[] bytes1 = {31, -117, 8, 0};
String byStr = new String(bytes1,"iso-8859-1");
byte[] bytes2 = byStr.getBytes("iso-8859-1");
System.out.println(Arrays.toString(bytes2));
// 输出 byte2 结果为: [31, -117, 8, 0]
问题分析:
- 由于 UTF-8/GBK 是多字节编码,需要用多个字节来表示一个字符的编码,所以也就出现了在转换之后byte[]数组长度、内容不一致的情况。
- 而ISO-8859-1编码是单字节编码,所以使用该编码就不会出现上面的问题
贴上就用:工具类附上
.。。。。。。
文章迁移:具体内容点击这里