Quando si utilizza Convalida tramite URI, il server deve annunciare la codifica dei caratteri nelle intestazioni HTTP, più precisamente nel parametro charset
del valore di intestazione Content-Type
.In questo caso, questo a quanto pare non accade. Puoi controllare la situazione, ad es. utilizzando Rex Swain's HTTP Viewer.
Secondo clausola 4.2.5.5 Specifying the document's character encoding in HTML5 CR, “Se un documento HTML non inizia con una distinta base, e la sua codifica non è esplicitamente dato da Content-Type metadati, e il documento non è un documento iframe srcdoc, poi il carattere la codifica utilizzata deve essere una codifica di caratteri compatibile ASCII e la codifica deve essere specificata utilizzando un meta elemento con un attributo charset o un meta elemento con un attributo http-equiv nello stato di dichiarazione di codifica. "Questo è un po 'complicato, ma il la linea di fondo è: ci sono diversi modi per dichiarare la codifica, ma se nessuno di essi viene usato, il documento non è conforme.
Perché specifica che è un po 'speculativo, ma l'idea generale è che tali regole promuovono affidabilità e robustezza. Quando la regola non è rispettata, i diversi browser possono utilizzare valori predefiniti o tentativi di congettura diversi.
Il validatore assume windows-1252, perché questo è quello che portano le regole HTML5. Le regole di elaborazione sono in 8.2.2.1 Determining the character encoding. Sono abbastanza complicati, ma riflettono in larga misura il modo in cui i browser moderni fanno (e mira a renderlo uno standard). Le regole ci sono anche per trattare documenti non conformi, ma questo non rende questi documenti conformi; le regole di elaborazione degli errori non sono realmente "fallback" e non dovrebbero essere invocate, specialmente dal momento che i vecchi browser non sempre giocano secondo le regole.
Le regole di errore diventano un po 'allentate quando si tratta di una situazione in cui tutto il resto fallisce e deve essere utilizzata una "codifica dei caratteri di default definita dall'implementazione o specificata dall'utente". Ci sono solo "suggerimenti" su cosa potrebbero fare i browser (di nuovo, rispecchiando ciò che generalmente fanno i browser moderni), e questo può comportare l'uso del "locale dell'utente", un concetto oscuro. Il validatore usa windows-1252 quindi, forse perché è l'impostazione predefinita per l'inglese e il validatore "parla" l'inglese, o forse solo perché è l'ipotesi che dovrebbe essere corretta più spesso di qualsiasi altra alternativa singola.
fonte
2013-07-30 08:39:17
Cosa ti fa pensare che un browser supponga UTF-8 quando non viene specificata alcuna codifica? A quale "regole di riserva" ti riferisci? –
La codifica Windows-1252 funziona? – pattyd
Interessante ... il tuo esempio html mostrato si convalida come html5/utf8 quando lo incollo nella convalida tramite la finestra di input diretto – WebChemist