java 实现数据压缩与解压

本文探讨了字符编码问题,特别是UTF-8和GBK编码在转换过程中可能导致的字节长度变化和内容不一致。通过示例展示了如何在ISO-8859-1编码下保持字节数组的一致性,强调了在处理多字节编码时需要注意的细节。
摘要由CSDN通过智能技术生成

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

送上小小经验:

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

贴上就用:工具类附上

.。。。。。。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花荣白起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值