10

Estoy trabajando en una aplicación web, donde transfiero datos del servidor al navegador en XML.caracteres internacionales en Javascript

Como soy danés, rápidamente encuentro problemas con los caracteres æøå.

Sé que en html, uso el "æøå" para æøå.

Sin embargo, tan pronto como los chars pasan a través de JavaScript, obtengo cuadros negros con "?" en ellos cuando usa æøå, y "æøå" se imprime como está.

Me he asegurado de configurarlo en utf-8, pero eso no está ayudando mucho.

Idealmente, quiero que funcione con cualquier carácter especial (naturalmente).

El ejemplo que no está funcionando se incluye a continuación:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Untitled Document</title> 
     <script type="text/javascript" charset="utf-8"> 
      alert("&aelig;&oslash;&aring;"); 
      alert("æøå"); 

     </script> 
    </head> 
    <body> 
    </body> 
</html> 

¿Qué estoy haciendo mal?


Ok, gracias a Grapefrukts respuesta, lo tengo trabajando.

Realmente lo necesitaba para datos provenientes de un servidor MySQL. Ya que el ahorro de los archivos en la codificación UTF-8 sólo resuelve el problema de contenido estático, supongo que me incluyo la solución para las cadenas de un servidor MySQL, saqué usando PHP:

utf8_encode($MyStringHere)

Respuesta

10

Solo especificar UTF-8 en el encabezado no es suficiente. Apuesto a que no ha guardado su archivo como UTF-8. Cualquier editor de texto razonablemente avanzado tendrá esta opción. Pruébalo y estoy seguro de que funcionará.

0

Estos trabajos como se esperaba para mí:

alert("&aelig;&oslash;&aring;"); 

... crea una alerta que contiene la cadena "& aelig; & oslash; & aración;" mientras que

alert("æøå"); 

... crea una alerta con los caracteres no ASCII.

Javascript es bastante utf-8 limpio y no tiende a poner obstáculos en su camino.

¿Quizás está poniendo esto en un servidor web que lo sirve como ISO-8859-1? Si utiliza Apache, en el archivo de configuración de Apache (o en .httaccess, si se puede anular), usted debe tener una línea

AddCharset utf-8 .js 

(Nota: editado para escapar de los símbolos de unión ... de lo contrario no lo hizo tiene sentido.)

1

Me sale "& aelig; & oslash; & aring;" para el primero y algunos caracteres basura para el siguiente. ¿Podría ser que el javascript no esté destruyendo (o mojibake) sus letras, pero el cuadro de diálogo de alerta usa la fuente predeterminada del sistema y la fuente no puede mostrar las letras?

6

También puede usar String.fromCharCode() para generar un carácter de una entidad numérica.

p. Ej. String.fromCharCode(8226) creará un carácter de viñeta.

20

Si alguna vez no puede establecer la codificación de respuesta, puede usar \u secuencia de escape en el literal de cadena de JavaScript para mostrar estos caracteres.

alert("\u00e6\u00f8\u00e5") 
1

Utilizo el código como este con el idioma tailandés. Está bien.

$message es mi variable de PHP.

echo("<html><head><meta charset='utf-8'></head><body><script type='text/javascript'>alert('" . $message . "');</script></body></html>"); 

Espero que te ayudemos. Gracias.

(no puedo publicar la imagen de lo que hice como el sistema dicho "No tengo la reputación suficiente", por lo que dejar la imagen, aquí. http://goo.gl/9P3DtI Disculpen los inconvenientes.)

Lo siento por mi débil Inglés .

Cuestiones relacionadas