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

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

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

这个说法:

如果你只使用常规的Javascript’compress’函数,那么根据字符串中的数据,它不会在C#端正确解压缩。

但是,如果您使用此C#版本中内置的“压缩”function,那么您应该可以使用包含的常规“解压缩”function。

关于这个报道的问题: c#版本的compressToBase64中可能存在错误

你给出的链接中的完整描述说你应该能够使用’compressToUTF16’并且它总能工作,而不仅仅是’压缩’,这并不总是有效。

我亲自测试过,看到它有效。

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

我们通过添加enc1 = enc2 = enc3 = enc4 = 0; 下面两行之间(stringbuilder版本之前的原始文件中的第580行)

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

  i += 3; enc1 = enc2 = enc3 = enc4 = 0; enc1 = (int)(Math.Round(chr1)) >> 2;