對於一個特殊的值,我試過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角色。 –