Javascript 为什么JSZip不像桌面Archivator那样压缩字符串文件?

Javascript 为什么JSZip不像桌面Archivator那样压缩字符串文件?,javascript,zip,jszip,Javascript,Zip,Jszip,我有一个大的JS对象,我想保存到本地存储。我想将其压缩保存,因此我执行以下操作: JSON.stringify(article).length which gives me 168478 现在,如果我把上面的输出放到Windows中的.txt文件中,它的大小是169246,这与JSON.stringify的输出非常接近。现在我想压缩文件。我使用WinRAR将桌面版本压缩为.zip格式,它给出了11284的输出,这是相当大的压缩。现在,我在JSZip上也尝试了同样的方法: zip.file('a

我有一个大的JS对象,我想保存到本地存储。我想将其压缩保存,因此我执行以下操作:

JSON.stringify(article).length which gives me 168478
现在,如果我把上面的输出放到Windows中的.txt文件中,它的大小是169246,这与JSON.stringify的输出非常接近。现在我想压缩文件。我使用WinRAR将桌面版本压缩为.zip格式,它给出了11284的输出,这是相当大的压缩。现在,我在JSZip上也尝试了同样的方法:

zip.file('article1', JSON.stringify(article));
var content = zip.generate({type : "string"});

如果我检查压缩内容大小content.length,我会得到176296,它甚至比原来的字符串化对象还要大。那么我做错什么了吗?

我认为原因是javascript中的字符串是用UTF-16编码的。因此,一个10MB ascii文本文件将占用20MB内存。

文本不仅限于ascii字符,它还包含来自需要16MB的语言的字符。@Maximus not ascii characters only可能是原因,而不是原始包的两倍?JS的编码可能是你得到更大的软件包的原因。在windows和浏览器中,文本是相同的,所以在windows中,每个字符需要16字节。