2015-05-09 42 views
1

我有几个简短的utf16字符串,我需要压缩(每个大约20-200字符长)。压缩unicode(utf16)字符串的短缓冲区

该字符串几乎总是使用英文字符和数字创建的。

我大概可以自己写一些压缩文件,其中大约有50%的结果。

寻找一个想法/实现。

使用C#林

+1

我可以将它转换为UTF8并实现接近50%的压缩... :-) – xanatos

+0

问题是,你想用这些字符串压缩一次吗?一个压缩的字符串或一个转换为UTF8的字符串是一个'byte []',所以对它的工作不太好。您可以保存它,加载它并传输它。 – xanatos

+0

你可以看到http://stackoverflow.com/a/7343623/613130是你想要的。 .NET的字符串是UTF16字符串。 – xanatos

回答

1
  1. 使用UTF-8。它给你你要求的50%。
  2. 通过利用这些字节的几乎所有高位在英文文本中都为零的事实,您可以轻松实现更多功能。
  3. 然后,您可以应用共享的预先计算的霍夫曼树来利用字母分布。
  4. 对于很长的字符串(比如> 100个字符),我可以想象使用Deflate或类似的东西开始变得有效。转换为UTF-8后,我会使用Deflate。
  5. 如果你愿意使用共享字典,你可以实现更多的压缩。该字典需要预先计算并与整个语料库共享。