1

我需要能够在 Javascript 中压缩字符串,但不保存临时文件。然后我将通过 POST 发送这些压缩数据。我将在 Python 中收到它,所以我需要能够在那里解压缩它。我实现了以下http://rosettacode.org/wiki/LZW_compression,却发现它只适用于 ascii 字符。我要阅读网页,但永远不知道我会得到什么字符。

(我需要这样做的原因是因为字符串可能会变得很长,因此慢速网络需要很长时间才能发布。)

4

3 回答 3

2

您可以事先尝试对字符串进行 base64 编码(这将产生一个从 1.5 到两倍大小的压缩流,如果可以直接压缩它的话)。

这里还有另一个实现(gzip Deflate 算法的这个)。

或者您可以尝试通过将非 ASCII 字符替换为 \xNN(NN = 十六进制字符代码)来转义它们。当然,您还必须避开斜线。

无论如何,您不太可能将速度提高 10 倍以上,而且我担心这会被编码开销所平衡。在不了解用例的情况下,我建议使用 Deflate。

于 2012-10-04T16:21:28.647 回答
0

在 javascript中使用deflate,在 python 中使用 zlib。(LZW 是古老而过时的——现代方法要好得多。)在使用 base 85 编码之间,选择 85 个 ASCII 字符而不是实验或标准文档表明可以使其通过 POST 毫发无损。Base 85 就是每个字符都是 base 85 数字中的一个数字,其中五个这样的数字编码 32 位。

于 2012-10-04T17:20:59.733 回答
0

来自 OP 评论。

javascript 读取 DOM 元素并发送它。由于各种原因,无法指向源代码,其中一个主要原因是我需要页面上由 javascript 创建的元素。我还需要浏览器为我计算的计算样式。

一种解决方案是使用Selenium和 Python 自动化浏览器,然后从中检索 DOM。

于 2012-10-04T16:21:57.673 回答