2012-12-28 15 views
8

E 'HTML valido da usare IRI contenenti caratteri non-ASCII come valori degli attributi (ad esempio per href attributi) invece di URI? Ci sono differenze tra i sapori HTML (HTML e XHTML, 4 e 5)? Almeno RFC 3986 sembra implicare che non lo sia.Gli IRI sono validi come valori di attributo HTML?

Mi rendo conto che probabilmente sarebbe più sicuro (per quanto riguarda il software vecchio e IRI-inconsapevole) utilizzare la codifica percentuale, ma sto cercando una risposta definitiva per quanto riguarda lo standard.

Finora, ho eseguito alcuni test con il W3C validator e i caratteri Unicode senza escape negli URI non attivano alcun avviso o errore con HTML 4/5 e XHTML 4/5 doctypes (ma ovviamente l'assenza di errori i messaggi non implicano l'assenza di errori).

Almeno Chrome supporta anche cruda UTF-8 IRI, ma li cento-sfugge prima di sparare una richiesta HTTP. Inoltre, il mio server web (lighttpd) sembra supportare i caratteri UTF-8 nella loro percentuale codificati come pure in forma non codificata in una richiesta HTTP.

+0

Attenzione che [Sezione 1.2 di RFC 3987] (http://tools.ietf.org/html/rfc3987#section-1.2) indica che HTTP come definito da [RFC 2616] (http: //tools.ietf. org/html/rfc2616) fa ** NOT ** per supportare gli IRI, quindi gestirli è al di fuori dello standard. Tu (o il tuo browser, o qualcuno) devi prima mappare un dato IRI a un URI prima di provare a recuperare la risorsa referenziata. – Oliver

+0

possibile duplicato di [caratteri Unicode negli URL] (http://stackoverflow.com/questions/2742852/unicode-characters-in-urls) –

risposta

6

HTML 4.01 è abbastanza semplice. Attributi diversi hanno regole diverse per quanto riguarda ciò che possono contenere, ma se abbiamo a che fare con l'attributo href su un elemento <a>, allora la HTML 4 spec, section B.2.1 Non-ASCII characters in URI attribute values dice:

... il seguente valore href è illegale:

<A href="http://foo.org/Håkon">...</A>

HTML5 è diverso. Si dice IRIs are valid providing they comply with some additional conditions.

Un URL è un URL valido se almeno una delle seguenti condizioni vale:

  • L'URL è un riferimento URI valido [RFC3986].

  • L'URL è un riferimento IRI valido e non ha alcun componente di query. [RFC3987]

  • L'URL è un riferimento IRI valido e il suo componente di query non contiene caratteri non ASCII non escape. [RFC3987]

  • L'URL è un riferimento IRI valido e la codifica di carattere del documento dell'URL è UTF-8 o una codifica UTF-16. [RFC3987]

XHTML 1.x segue le stesse regole di HTML 4.01.

XHTML5 è lo stesso di HTML5.

2

In caso di dubbio, leggere le specifiche HTML ufficiali per le risposte definitive.

HTML 4 non supporta affatto IRI. Essi devono essere codificati come URI per RFC 3987 Section 3.1, o codificare non ASCII dati URI come UTF-8 con cento codifica per HTML4 Section B.2.1

HTML 5 supporta sia URI e IRI in tutti i luoghi in cui sono ammessi gli URL, per HTML5 Section 2.6.

Problemi correlati