我正在使用一种流行的JavaScript deflate / inflate算法,很多其他人似乎也在使用这种算法。
我没有看到任何使用deflate / inflate作为往返的问题的报告,但我似乎有这样的情况:发送特定输入,调用deflate然后inflate给我一个空输出。在处理标题时,膨胀是错误的。我把deflate的输出放到了许多其他标准版本的deflate中,比如zlib和jzlib,他们对标题提出了同样的抱怨。
我创建了一个fiddle来演示往返问题。测试的核心是:
var output = decodeURIComponent(RawDeflate.inflate(RawDeflate.deflate(encodeURIComponent(input))));
在deflate之前我使用encodeURIComponent来确保输出有效的字符集(0-255)以进行放气。
输入字符串对更改非常敏感,如果您更改任何内容,它将起作用。我见过人们除了我拥有的东西之外还使用了escape / unescape,但我仍然得到了往返失败的案例(不同案例)。
是否存在已知的调用序列,其中此算法始终正确地往返,或者已知算法/实现具有故障情况?