Pour une valeur spéciale, j'ai essayé le HTML <option value="�">unspecified</option>
, mais il semble que le caractère NUL n'est pas interprété en HTML. Je reçois �. Je voudrais savoir pourquoi, et quels autres caractères inhabituels UTF-8 en dehors de NUL
je dois faire attention.Pourquoi HTML ne peut-il pas contenir un caractère NUL? (converti en 0xFFFD/"% EF% BF% BD")
Voici a fiddle to demonstrate de quoi je parle.
<select><option value="�">�</option></select>
Comme vous pouvez le voir ci-dessus, la liste déroulante est configuré avec des valeurs NUL, mais ils sont convertis en JavaScript lorsque les résultats inspecte.
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 peut spécifiquement mis value
et label
à \u0000
et il fonctionne, mais pour une raison quelconque ce n'est pas en mesure d'être rendu dans le code HTML.
Pouvez-vous expliquer pourquoi et/ou pointer vers la documentation pertinente? Y a-t-il d'autres caractères UTF-8 qui seront substitués de la même manière?
À quoi pensiez-vous qu'il soit rendu? – rollingBalls
'NULL' est mentionné dans la deuxième note sous [8.2.2.5 Pré-traitement du flux d'entrée] (http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream) dans HTML du W3C/Recommandation XHTML. Il lit comme "cela dépend" pour moi: P – usr2564301
@rollingBalls, je m'attends à '% 00,% 00, ' dans les trois alertes - où NUL est la représentation spécifique au navigateur d'un personnage NUL. –