我目前的“最佳理解”是将Javascript字符串在内存中表示为DOMString,这意味着unicode字形a
(拉丁小写字母A)由2个字节表示(在内存中)使用UTF-16
文本编码。
此编码在使用浏览器的存储API localStorage时保持不变,其中文档还指出存储的内容是DOMString
,这与通常可以存储{{1}的流行神话相反},而不是10MB
在localStorage中有误。
我的问题不是关于5MB
,而是关于网络扩展存储API browser.storage.local。使用window.localStorage
,我可以测试(使用getBytesInUse)是否使用UTF-8对存储的数据进行了编码,但是我还没有找到任何文档/规范,据我所知只有通过实验发现。
此问题的答案应说明是否:
浏览器扩展的存储API数据是否存储为UTF-8编码?
并提供引用以指定这种方式。
背景/原理 我开发了一个浏览器扩展程序,用于存储文本数据,我希望在存储之前先对其进行压缩以节省空间。由于提供的Storage API不允许存储原始二进制数据,因此我试图对压缩算法进行调整,以使其浪费最少,从而使其对base64转换二进制数据起反作用。要有效地存储带有文本的信息,但是使用文本编码会产生巨大的差异。
浏览器扩展程序中存储的数据主要是英语的压缩HTML标记,这将受益于使用chromium
文本编码的数据存储。
作为参考,我已经检查/通读了与UTF-8
类型有关的以下信息,这些类型与浏览器的Javascript引擎和DOM引擎有关:String,DOMString,USVString`