HTML5 localStorage键可以是任何字符串吗?

Bra*_*yer 21 javascript html5 cross-browser local-storage

我正在开发一个使用HTML5 localStorage的应用程序.除了它必须是一个字符串之外,我无法找到关键是否有任何限制.

具体来说,我想知道我是否可以在支持localStorage的所有浏览器中使用URL作为localStorage中的键(例如,:/?#._-=+@!$%^&*()[]{}|<>允许在键中使用的符号?).

还有:空白怎么样?是否允许跨浏览器的localStorage密钥?

我找到了这个主题,但它似乎只测试了localStorage值(而不是键)中可接受的字符串.

Spl*_*iFF 19

规范要求设置键和值并作为DOMString类型值返回.DOMString在[DOM Level 3 Core] [1]中描述为:

A DOMString is a sequence of 16-bit units.

IDL Definition

    valuetype DOMString sequence<unsigned short>;
Run Code Online (Sandbox Code Playgroud)

选择UTF-16编码是因为其广泛的行业惯例.请注意,对于HTML和XML,文档字符集(以及数字字符引用的表示法)基于UCS [ISO/IEC 10646].因此,源文档中的单个数字字符引用可能在某些情况下对应于DOMString中的两个16位单元(高代理和低代理).有关字符串比较的问题,请参阅DOM中的字符串比较.

对于Java和ECMAScript,DOMString绑定到String类型,因为两种语言也使用UTF-16作为其编码.

所以正式地说,任何合法的UTF-16字符串都是合法的键或值.并非每个UTF-16代码点都是合法字符,因此您应该尽量避免某些符号,如"代理对","字节顺序标记"和"保留字符".