25

Tengo algunos caracteres chinos que trato de mostrar en un sitio web impulsado por Kentico. Este texto se copia/pega en el editor FCK de Kenticos y luego se guarda y aparece en el sitio. En Firefox, Chrome y Safari, los personajes aparecen exactamente como se esperaba. En el modo Estándares IE 8, solo veo cuadros.¿Por qué IE no muestra texto codificado en UTF-8?

El texto está codificado en UTF-8, y hasta donde sé, está codificado correctamente en la respuesta del servidor. Hay un encabezado de respuesta Content-Type: text/html; charset=utf-8 y una metaetiqueta <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> en la página también. Cuando descargo el HTML del servidor y comparo los bytes de los caracteres en cuestión con el documento de texto original UTF-8, todos los bytes coinciden, excepto que el HTML no incluye una lista de materiales.

Esto parece ser específico de IE 8 en modo Estándares. En IE 8 Quriks: funciona. Estándares IE 7: funciona. IE 7 Quirks: Funciona. No estoy seguro de cómo el modo estándar podría causar este problema.

Curiosamente, si veo-fuente desde IE, los caracteres aparecen correctamente en la vista de origen.

¿Alguna sugerencia sobre qué podría estar mal aquí? ¿Me estoy perdiendo algo obvio?

+0

Tuvimos un problema con IE11 que no mostraba los iconos UTF-8 y encontré esta pregunta en mi búsqueda de una solución, pero mi problema fue causado por los encabezados 'no-store' y' no-cache' como se describe en esta [página de solución de problemas de Font Awesome] (https://github.com/FortAwesome/Font-Awesome/wiki/Troubleshooting#im-hosting-fonts-on-my-server-and-icons-dont-show-up). Solo en caso de que alguien más se encuentre aquí con el mismo problema. –

Respuesta

11

No puedo explicar esto en detalle. Pero este es de hecho un problema conocido.

Aquí hay un pequeño fragmento de código reproducibles:

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

Guardar en UTF-8 y vista en IE8. No ves nada Reemplace 0 0 por 00 y vuelva a cargar la página. ¡Funcionará bien! Esto es absolutamente asombroso. Extrañamente, reemplazando 0 0 por a a o <br> por un </p><p> lo arreglará también. Tendrá algo que ver con las fallas en la representación de espacios en blanco.

Disculpe, no tengo recursos de autoría que lo prueben, pero esta es solo otra evidencia de que IE8 no es tan bueno como esperamos. Su mejor opción es intentar cambiar el HTML y/o compilarlo paso por paso para que funcione en algún momento o cuando sea en vano, agregue la siguiente metaetiqueta al cabezal para forzar IE8 al modo IE7:

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

¡Eso es una locura! Pero forzar el modo de compatibilidad con IE 7 realmente funciona en el lado público. Ahora solo tengo que descubrir cómo forzar el modo de compatibilidad dentro del iframe FCK Editor para que el usuario pueda editar el texto. Gracias por la info! – mrdrbob

+0

¡Salud! Mucha suerte con este extraño problema. – BalusC

+1

Acabo de malgastar 4 horas en esta para llegar a una solución similar (¡doh!). En lugar de arreglar el modo compat para IE7 (aunque IE9 está fuera) simplemente lo configuro en "IE = Edge", que es lo mismo que decir "use lo último que conozca". Esto pareció obligar a IE9 a reconocer el hecho de que debería estar en UTF-8, lo más extraño, pero funciona. Aquí para referencia si otros también lo tienen. –

3

Simplemente una conjetura salvaje, pero podría ser un problema de fuente. Tal vez las fuentes disponibles para su navegador puedan 'representar dichos caracteres chinos.

8

La IE codificación predeterminada es europea (ISO) Western así que hay que cambiar manualmente a UTF-8 o hacer cumplir IE para utilizar una codificación determinada de esta manera:

  • HTML 4.01

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

  • HTML 5

    <meta charset="UTF-8">

Y también es necesario utilizar lang atributo en <html> etiqueta para declarar lenguaje

<html lang="zh"> 

de Ch inese

+0

¡Esto funciona perfectamente! Agregar el atributo de idioma a la etiqueta html hizo el truco. –

2

Logré solucionar el problema al cambiar el formato UTF del archivo a "UTF8 con marca de orden de bytes".

(El editor que uso me permite cambiar formatos de archivo fácilmente, no estoy seguro de cómo proceder, pero vale la pena mirar los diferentes formatos de archivos UTF, IE (8) simplemente no le gusta UTF8 Sin marcas de orden Byte ...)

También pude reproducir el fragmento de la respuesta anterior;

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

Pero mis resultados eran "intermitente", mientras que en UTF-Sin BOM (a veces acentos aparecerían, en otras ocasiones contengan los caracteres extraños, y no se veía como un problema de la representación de espacio en blanco para mí ...) Tenga en cuenta que estaba jugando con lang = "fr" y lang = "es", pero en todos los casos, cambiar el formato de archivo UTF parece haber resuelto permanentemente mis problemas de visualización de acentos. :)

No estoy 100% familiarizado con UTF, pero si los caracteres están codificados utilizando 2 bytes, uno debería asumir que los problemas de espacio en blanco y los caracteres no entendidos podrían estar relacionados con bytes desalineados en las fuentes.

Cuestiones relacionadas