Ist die Verwendung von IRIs mit Nicht-ASCII-Zeichen als Attributwerte (z. B. für href
-Attribute) anstelle von URIs zulässig? Gibt es Unterschiede zwischen den HTML-Varianten (HTML und XHTML, 4 und 5)? Mindestens RFC 3986 scheint zu implizieren, dass dies nicht der Fall ist.
Mir ist klar, dass es wahrscheinlich sicherer wäre (in Bezug auf ältere und IRI-unbewusste Software), prozentuelle Kodierung zu verwenden, aber ich suche nach einer definitiven Antwort in Bezug auf den Standard.
Bisher habe ich einige Tests mit dem W3C-Validator durchgeführt, und nicht-gescannte Unicode-Zeichen in URIs lösen keine Warnungen aus oder Fehler mit HTML 4/5 und XHTML 4/5 Doctypes (aber die Abwesenheit von Fehlermeldungen bedeutet natürlich nicht die Abwesenheit von Fehlern).
Zumindest unterstützt chrome auch unformatierte UTF-8-IRIs, aber prozentual-entkoppelt sie, bevor eine HTTP-Anfrage ausgelöst wird. Außerdem scheint mein Webserver (lighttpd) UTF-8-Zeichen sowohl in ihrer prozentcodierten als auch in ihrer uncodierten Form in einer HTTP-Anfrage zu unterstützen.
HTML 4.01 ist einfach genug. Unterschiedliche Attribute haben unterschiedliche Regeln, was sie beinhalten können. Wenn es sich jedoch um das href-Attribut in einem <a>
-Element handelt, dann ist HTML 4-Spezifikation, Abschnitt B.2.1 Nicht-ASCII-Zeichen in URI-Attributwerten lautet:
... der folgende href-Wert ist unzulässig:
<A href="http://foo.org/Håkon">...</A>
HTML5 ist anders. Es heißt IRIs sind gültig, wenn sie einige zusätzliche Bedingungen erfüllen. >
Eine URL ist eine gültige URL, wenn mindestens eine der folgenden Bedingungen zutrifft hält:
Die URL ist eine gültige URI-Referenz [RFC3986].
Die URL ist eine gültige IRI-Referenz und hat keine Abfragekomponente. [RFC3987]
Die URL ist eine gültige IRI-Referenz und ihre Abfragekomponente enthält keine nicht-gescannten Nicht-ASCII-Zeichen. [RFC3987]
Die URL ist eine gültige IRI-Referenz und die Zeichencodierung des Dokuments der URL ist UTF-8 oder eine UTF-16-Codierung. [RFC3987]
XHTML 1.x folgt denselben Regeln wie HTML 4.01.
XHTML5 ist dasselbe wie HTML5.
Lesen Sie im Zweifelsfall die offiziellen HTML-Spezifikationen für die endgültigen Antworten.
HTML 4 unterstützt überhaupt keine IRIs. Sie müssen als URIs nach RFC 3987 Section 3.1 codiert sein oder Nicht-ASCII-URI-Daten als UTF- codieren. 8 mit prozentualer Kodierung pro HTML4 Abschnitt B.2.1
HTML 5 unterstützt sowohl URIs als auch IRIs an allen Stellen, an denen URLs erlaubt sind, pro HTML5 Abschnitt 2.6 .