对于一个特殊的值,我试过HTML <option value="�">unspecified</option>
,但似乎NUL字符不是用HTML解释的。我得到�。我想知道为什么,以及除了NUL
之外还有什么其他不寻常的UTF-8字符可能需要注意。为什么HTML不能包含NUL字符? (转换为0xFFFD /“%EF%BF%BD”)
这是a fiddle to demonstrate我在说什么。
<select><option value="�">�</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可以专门设置value
和label
到\u0000
和它的作品,但由于某些原因,这是不能够在HTML中呈现。
您能解释为什么和/或指向相关文档吗?还有其他的UTF-8字符会以相似的方式替换吗?
你认为它被渲染为什么? – rollingBalls
在W3C HTML中[8.2.2.5预处理输入流](http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream)的第二个注释中提到了'NULL'/XHTML建议。它读取为“取决于”给我:P – usr2564301
@rollingBalls,我期待所有三个警报中的'%00,%00,<选项值=“NUL”> NUL' - 其中NUL是浏览器特定的表示的NUL角色。 –