0

对于特殊值,我尝试了 HTML <option value="&#0;">unspecified</option>,但似乎 NUL 字符没有在 HTML 中解释。我得到了…</a>。我想知道原因,以及除了NUL我可能需要注意的其他不寻常的 UTF-8 字符。

这是一个小提琴来证明我在说什么。

<select><option value="&#0;">&#0;</option></select>

正如你在上面看到的,下拉列表设置了 NUL 值,但是当 JavaScript 检查结果时它们被转换为 �。

var select = document.querySelector('select')
inspect()
select.options[0].value = '\u0000'
select.options[0].label = '\u0000'
inspect()
select.innerHTML = select.innerHTML
inspect()
function inspect() {
  alert(encodeURIComponent(select.options[0].value)
        + ','
        + encodeURIComponent(select.options[0].label)
        + ','
        + select.innerHTML)
}

JavaScript 可以专门设置valuelabel设置\u0000并且它可以工作,但由于某种原因,这无法在 HTML 中呈现。

您能否解释原因和/或指向相关文档?是否有其他 UTF-8 字符将以类似方式替换?

4

2 回答 2

3

HTML5 规范中有一个字符引用覆盖表,用于映射字符引用。其中第一个是为&#0;

随后是一些散文,指出 0xD800 到 0xDFFF 或大于 0x10FFFF 范围内的数字也映射到 Unicode 替换字符。

于 2015-10-20T00:02:54.253 回答
0

NUL 无效。HTML 是基于文本的文档。只能输入字符串。

https://developers.whatwg.org/elements.html#attributes

除非另有说明,否则 HTML 元素上的属性可以具有任何字符串值,包括空字符串。除非明确说明,对这些属性中可以指定的文本没有任何限制。

于 2015-10-19T22:59:16.143 回答