Arr*_*rry 5 java compression unicode gzip gzipoutputstream
我GZIPOutputStream在Java程序中使用它来压缩大字符串,最后将其存储在数据库中。
我看到在压缩英文文本时,我实现了1/4到1/10的压缩比(取决于字符串值)。例如,假设我的原始英文文本为100kb,那么平均压缩文本大约为30kb。
但是当我压缩unicode字符时,压缩的字符串实际上比原始字符串占用更多的字节。举例来说,我的原始unicode字符串为100kb,然后压缩版本为200kb。
Unicode字符串示例: "?????????????for.Hi???"
谁能建议我也如何实现unicode文本的压缩?为什么压缩版本实际上比原始版本大?
我在Java中的压缩代码:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream zos = new GZIPOutputStream(baos);
zos.write(text.getBytes("UTF-8"));
zos.finish();
zos.flush();
byte[] udpBuffer = baos.toByteArray();
Run Code Online (Sandbox Code Playgroud)
我不太懂中文,但据我所知,GZIP 压缩取决于文本的重复序列,而这些重复序列会随着“描述”而改变(这是一个非常高级的解释)。这意味着,如果字符串中的 20 个位置有“library”一词,算法会将“library”一词存储在侧面,并注意它应该出现在 x、y、z 位置...因此,您可能不会原始字符串中有很多冗余,因此您无法节省很多。相反,您的管理费用多于节省的费用。
我不是真正的压缩专家,也不知道细节,但这就是压缩的基本原理。
PS 这个问题可能只是重复:Why gzipcompressed buffer size is Greater then uncompressed buffer?
| 归档时间: |
|
| 查看次数: |
994 次 |
| 最近记录: |