压缩/解压缩在客户端上使用lz-string.js编码的.NET服务器上的字符串

时间:2014-07-01 14:09:37

标签: c# javascript compression base64 lzma

我正在使用lz-string.js的LZString.compressToBase64函数,需要在服务器端解压缩/压缩数据。

显而易见的解决方案似乎是lz_string_csharp,但我担心

这句话:

  

如果您只使用常规Javascript'压缩'函数然后根据字符串中的数据,它不会在C#端正确解压缩。

     

但是,如果你正在使用'压缩'在这个C#版本中内置的功能,那么您应该可以使用常规'解压缩'功能包括在内。

关于此报告的问题:possible bug in c# version of compressToBase64

2 个答案:

答案 0 :(得分:1)

您提供的链接中的完整说明表明您应该可以使用' compressToUTF16'它将始终有效,而不仅仅是“压缩”,它不会一直有效。

我亲自测试了它并发现它有效。

(虽然我将Context_Compress_Data.str字段从字符串更改为C#文件中的StringBuilder,因为它运行速度太慢。之后,8 MB JSON文件仅需8秒,压缩为7%原始大小。)

答案 1 :(得分:0)

我们通过在下面的两行之间添加enc1 = enc2 = enc3 = enc4 = 0;来修复此问题({03}中的第580行在stringbuilder版本之前)

从我记忆中来看,这个bug是由enc1,enc2等的值引起的......没有在每个循环开始时被重置,所以有时循环的新迭代有来自前一轮的错误值。

  i += 3;

                    enc1 = enc2 = enc3 = enc4 = 0;

                    enc1 = (int)(Math.Round(chr1)) >> 2;