以下是我压缩字符串的代码
val bos = ByteArrayOutputStream()
GZIPOutputStream(bos).bufferedWriter(Charsets.UTF_8).use { it.write(data) }
String(bos.toByteArray(),Charsets.UTF_8)
对于 输入字符串
<?xml version="1.0" encoding="UTF-8" standalone="no"?><VAST version="2.0">
我将其作为 输出: �???????????????�����Q(K-*��ϳU2�3PRH�K �O��K�U
我期望基于此网站的输出如下 H4sIAAAAAAAAA7Oxr8jNUShLLSrOzM+zVTLUM1BSSM1Lzk/JzEu3VQoNcdO1UFIoLknMS0nMyc9LtVXKy1eyt7MJcwwOQegyAuqyAwB+wzaKSgAAAA== https://www.zickty.com/texttogzip
如何使用上述 gzip 压缩已知字符格式的字符串?
H4sIAAAAAAAAA7Oxr8jNUShLLSrOzM+zVTLUM1BSSM1Lzk/JzEu3VQoNcdO1UFIoLknMS0nMyc9LtVXKy1eyt7MJcwwOQegyAuqyAwB+wzaKSgAAAA==
这是在 gzip 压缩之后以 Base64 编码进行编码的。 (另请注意,Base64 编码将比原始字节消耗更多内存,可能比 gzip 节省的内存消耗更多。)
代码的输出大部分是原始字节。将其视为 UTF_8 字符串可能会损坏它。您根本不应该将其转换回字符串,或者使用 Base64 将其转换为字符串,即 java.util.Base64。
但还要注意,即使对于相同的 zip 算法,不同的压缩设置也可能会导致不同的压缩输出。验证压缩结果的唯一可靠方法是事后解压缩结果。