文章迁移:具体内容点击这里

送上小小经验:

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编码是单字节编码,所以使用该编码就不会出现上面的问题

贴上就用:工具类附上

.。。。。。。

文章迁移:具体内容点击这里