如何用localStorage压缩JavaScript字符串?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (145)

我在用localStorage在一个项目中,它将需要存储大量数据的类型,主要是int、bool和string类型。我知道javascript字符串是Unicode,但是当存储在localStorage,他们会继续使用Unicode吗?如果是这样的话,我是否可以压缩字符串以使用Unicode字节中的所有数据,还是应该只使用base 64而压缩更少数据使所有数据作为一个大字符串存储。

提问于
用户回答回答于

你可以将代码编码到base 64,然后实现一个简单的无损压缩算法,例如运行长度编码或Golomb编码,这应该不难做到。

用户回答回答于

“当存储在本地存储中时,它们是否保持Unicode?”

Web存储工作草案将本地存储值定义为DOMString。DOMStrings定义作为16位单元的序列,使用utf-16编码所以是的,他们仍然是Unicode。

是否有办法压缩字符串以使用unicode字节中的所有数据?

“base32k”编码应该为每个字符提供15位。基32k型编码利用了UTF-16字符中的16位,但丢失了一点,以避免双字字符绊倒。如果原始数据是base 64编码的,则每个字符只使用6位。将这6位编码为base 32k应该将其压缩到6/15=其原始大小的40%。

为了进一步缩小大小,你可以将base 64字符串解码为完整的8位二进制文件,然后使用一些已知的压缩算法,然后base 32k对压缩输出进行编码。

扫码关注云+社区

领取腾讯云代金券