25

Ho alcuni caratteri cinesi che sto cercando di visualizzare su un sito Web alimentato da Kentico. Questo testo è copiato/incollato nell'editor KKKKOS di Kenticos, quindi viene salvato e visualizzato sul sito. In Firefox, Chrome e Safari, i caratteri appaiono esattamente come previsto. Nella modalità Standard IE 8, vedo solo le caselle.Perché IE non riesce a mostrare il testo con codifica UTF-8?

Il testo è codificato in UTF-8 e, per quanto posso dire, è codificato correttamente nella risposta dal server. C'è anche un'intestazione di risposta Content-Type: text/html; charset=utf-8 e un meta tag <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> nella pagina. Quando scarico l'HTML dal server e confronta i byte dei caratteri in questione con il documento di testo UTF-8 originale, i byte corrispondono tutti, tranne che l'HTML non include un BOM.

Questo sembra essere specifico per IE 8 in modalità Standard. In IE 8 Quriks: funziona. Standard IE 7: funziona. IE 7 Quirks: Works. Non sono sicuro di come la modalità standard possa causare questo problema.

Stranamente, se visualizzo IE da IE, i caratteri vengono visualizzati correttamente nella vista di origine.

Qualche suggerimento su cosa potrebbe essere sbagliato qui? Mi manca qualcosa di ovvio?

+0

Abbiamo riscontrato un problema con IE11 a volte non mostrando icone UTF-8 e ho trovato questa domanda nella mia ricerca di una soluzione, ma il mio problema era in realtà causato da intestazioni 'no-store' e' no-cache' come descritto in questa [pagina di risoluzione dei problemi di Font Awesome] (https://github.com/FortAwesome/Font-Awesome/wiki/Troubleshooting#im-hosting-fonts-on-my-server-and-icons-dont-show-up). Nel caso in cui qualcun altro si trovi qui con lo stesso problema. –

risposta

11

non riesco a spiegare questo in dettaglio. Ma questo è davvero un problema noto.

Ecco un piccolo frammento di codice riproducibili:

<!DOCTYPE html> 
<html lang="en"> 
    <head><title>test</title></head> 
    <body><p>&#65185;<br>0 0</p></body> 
</html> 

Salva in UTF-8 e vista in IE8. Non vedi nulla. Sostituire 0 0 per 00 e ricaricare la pagina. Funzionerà benissimo! Questo è assolutamente sorprendente. Stranamente, sostituire 0 0 da a a o <br> da un </p><p> lo riparerà pure. Avrà qualcosa a che fare con i fallimenti nel rendering degli spazi bianchi.

Siamo spiacenti, non ho risorse autorevoli a dimostrarlo, ma questa è solo un'altra prova IE8 non è buono come ci aspettiamo che sia. La soluzione migliore è provare a modificare l'HTML e/o costruirlo passo dopo passo in modo che funzioni a un certo punto o invano, aggiungi il seguente metatag alla testa per forzare IE8 in modalità IE7:

<meta http-equiv="X-UA-Compatible" content="IE=7" /> 
+0

È pazzesco! Ma, forzando la modalità di compatibilità di IE 7 funziona davvero sul lato pubblico. Ora devo solo capire come forzare la modalità di compatibilità all'interno dell'iframe di FCK Editor in modo che l'utente possa effettivamente modificare il testo. Grazie per le informazioni! – mrdrbob

+0

Cheers! Molta fortuna con questo strano problema. – BalusC

+1

Ho appena sprecato 4 ore su questo per arrivare a una soluzione simile (doh!). Invece di fissare la modalità compat a IE7 (visto che IE9 è fuori), l'ho semplicemente impostato su "IE = Edge", che equivale a dire "usa l'ultima che conosci". Questo sembrava forzare IE9 a riconoscere il fatto che dovrebbe essere in UTF-8, il più strano ma funziona. Qui per riferimento se gli altri lo capiscono. –

3

Solo un'ipotesi selvaggia, ma potrebbe essere un problema di carattere. Forse i caratteri disponibili per il tuo browser possono 'rappresentare detti caratteri cinesi.

8

La codifica IE di default è Europa occidentale (ISO) quindi è necessario cambiare manualmente in UTF-8 o far valere IE di utilizzare una determinata codifica come questo:

  • HTML 4.01

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

  • HTML 5

    <meta charset="UTF-8">

Ed è anche necessario utilizzare l'attributo lang in <html> tag di dichiarare la lingua

<html lang="zh"> 

per Ch inese

+0

Questo funziona perfettamente! L'aggiunta dell'attributo language al tag html ha funzionato. –

2

Sono riuscito a risolvere lo stesso problema cambiando il formato UTF del file in "UTF8 con byte ordine".

(L'editor che utilizzo mi consente di cambiare facilmente i formati dei file, non so come procedere altrimenti, ma vale la pena dare un'occhiata ai diversi formati di file UTF, IE (8) semplicemente non piace UTF8 senza byte ...)

Sono stato anche in grado di riprodurre lo snippet dalla risposta sopra;

<!DOCTYPE html> 
<html lang="en"> 
    <head><title>test</title></head> 
    <body><p>&#65185;<br>0 0</p></body> 
</html> 

Ma i miei risultati sono stati "intermittenti", mentre in UTF-senza BOM (talvolta accenti rivelerebbe, altre volte i chars strane, e non ha l'aspetto di un problema di rendering spazio bianco per me ... Nota che mi sono divertito con lang = "fr" e lang = "es", ma in tutti i casi, la modifica del formato di file UTF sembra aver risolto in modo permanente i miei problemi di visualizzazione degli accenti. :)

Non ho familiarità al 100% con UTF, ma se i caratteri sono codificati utilizzando 2 byte, si dovrebbe supporre che i problemi di spazio bianco e caratteri mal interpretati potrebbero essere correlati a byte disallineati nelle origini.