Si está interesado en indicar la codificación del archivo de una manera legible para el ser humano, la idea T.J. Crowder's (agregar un comentario al archivo como // Encoding: UTF-8
) es lo correcto. Y como señaló Jukka K. Korpela, también puede usar la lista de materiales.
Pero si desea una forma legible por máquina para indicar conjunto de caracteres que se declara en el documento hay un par de otras maneras:
Por ejemplo, en un servidor Apache httpd puede usar cualquiera de las siguientes declaraciones :
AddDefaultCharset UTF-8
AddCharset UTF-8 .js
AddType 'application/javascript; charset=UTF-8' js
*
* No estoy interesado en hacer el caso para usar "application/javascript"
sobre "text/javascript"
. Pero si estás interesado en saber por qué uno u otro podrían ser preferibles, cf. https://stackoverflow.com/a/4101763/1070047. Sin embargo, dado el tema, application/javascript
parece bastante apropiado (especialmente si tiene la intención de utilizar una lista de materiales, porque indica que el código debe tratarse como un archivo binario).
Si se interpreta el código/procesado/del lado del servidor compilado (por ejemplo, PHP), puede configurar los encabezados en el documento, por ejemplo ...
header("Content-Type: application/javascript; charset=utf-8");
al menos dentro de PHP, asegúrese de agregar esa cabecera declaración antes de que tenga lugar cualquier salida.
Por último, al determinar qué declaración utilizar, considere que (cuando se entiende/respeta, es decir, no en IE), la lista de materiales tiene mayor autoridad que los encabezados de los documentos. Y ambos tienen prioridad sobre las declaraciones de caracteres vinculados/de origen (como <script type="application/javascript" src="script.js" charset="utf-8"></script>
).
También puede incluir una lista de materiales para UTF-8, y los navegadores lo respetan. – Andrea
@Andrea: no todos los navegadores, no confiablemente. Establecer el 'charset' de la respuesta no es opcional, el RFC relevante dice claramente que sin uno, la respuesta es US-ASCII. Apenas hace un par de semanas había una pregunta sobre eso, IE estaba interpretando un JSON solicitado por jajax en UTF-8, pero Firefox estaba impidiendo el BOM, llamándolo JSON no válido. –
@ T.J.Crowder ¿Qué RFC relevante? [La especificación de codificación de WHATWG dice que "la marca de orden de bytes (también conocida como lista de materiales) es más autoritativa que cualquier otra cosa"] (https://encoding.spec.whatwg.org/#specification-hooks).Por supuesto, debe incluir un juego de caracteres = si hace las cosas correctamente. – Andrea