2012-04-21 15 views

Respuesta

7

Si sus archivos javascript están codificados con una codificación diferente a la que está utilizando la página, puede usar el atributo charset para decirle al navegador cómo interpretarlo.

Por ejemplo, si la página está usando Latin1, pero el archivo JS se creó con UTF-8.

+1

Aunque me parece que es mejor poner la codificación en el encabezado de la respuesta que devuelve el script. – GolezTrol

+1

@GolezTrol - Sería mejor, pero no todos los autores web tienen ese control sobre los encabezados. – Oded

+1

Si la página está usando alguna otra codificación (en mi caso, euc-kr) y el JS usa UTF8, algún texto escrito llamando a document.write() o estableciendo innerHTML de algún elemento se codificará correctamente en la codificación (euc -kr) no UTF8? –

3

Cada archivo JavaScript es un elemento separado de la página, después de todo, incluso puede cargar JS desde el servidor de un autor remoto que de otro modo no tiene ninguna relación con su página. Al igual que con cualquier otro elemento externo, puede especificar manualmente "charset" si el servidor remoto devuelve un juego de caracteres incorrecto por alguna razón o simplemente para estar seguro. Además, si tiene acceso de escritura a este archivo JS, puede reemplazar todos los escapes de posición no ASCII con Unicode; esto garantizará que los símbolos siempre se interpretarán correctamente, independientemente de la codificación especificada en los encabezados. . Algunos minificadores de JS, como el compilador de cierres de Google, pueden hacerlo automáticamente.

+0

Entonces, ¿qué tiene prioridad? 'script charset' o el conjunto de caracteres de encabezado del archivo js incluido? – Pacerier

5

El objetivo del parámetro charset es especificar la codificación del script externo en los casos en que la codificación no se especifica en el nivel del protocolo HTTP. Es no destinado a anular la información de codificación en los encabezados HTTP, y no hace eso.

Esto es útil cuando el autor no puede controlar encabezados HTTP y los encabezados no especifican la codificación de caracteres. También es útil para archivos sin conexión, como en una copia local de una página web a la que se accede directamente, no a través de un servidor HTTP, de modo que no existen encabezados HTTP.

En la práctica, no es muy útil. Si necesita utilizar caracteres que no sean Ascii en un archivo JavaScript, puede usar la codificación UTF-8. Si usa UTF-8 con una lista de materiales líder, la lista de materiales actúa como un indicador útil que permite a los navegadores inferir la codificación. Pero no está de más usar el charset=utf-8.

+0

¿Está seguro de que el juego de caracteres especificado en el encabezado de un archivo JS incluido tiene más prioridad que el juego de caracteres explícito especificado en la página html principal?¿Se prueba esta afirmación en navegadores reales ** en libertad? – Pacerier

+1

Sí, probado en Firefox, Chrome, IE (Win 7). Página de prueba: http://www.cs.tut.fi/~jkorpela/test/js/demo.html –

Cuestiones relacionadas