压缩unicode(utf16)字符串的短缓冲区

时间:2015-05-09 14:55:33

标签: .net string compression

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

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

我自己可能会写一些压缩,其结果大约有50%。

寻找想法/实施。

我正在使用C#

1 个答案:

答案 0 :(得分:2)

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