Codificación de caracteres del método JQuery .html

Tengo un problema similar a esto: jQuery AJAX Character Encoding, pero cualquier solución mencionada allí me funciona.

Hice tres files fáciles para mostrar el problema:

Archivo PHP:

//testing.php echo "nº one two € áéíóú"; 

Archivo de JavaScript (Yo uso JQuery)

 //Javascript file function testing() { $.ajax({ type: "GET", contentType: "application/x-www-form-urlencoded;charset=ISO-8859-1", url: "testing.php", }).done(function( data ) { $("#testing").text(data); //$("#testing").html(data); //It does the same encoding error }); } 

** Archivo HTML: **

 <html> <head> <title>E-COMMERCE</title> <meta content="text/html; charset=iso-8859-1" http-equiv=Content-Type> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <script src="javascript/jquery.js" type="text/javascript"></script> <script src="javascript/javascript.js" type="text/javascript"></script> </head> <body> <a href="javascript:testing()">Prueba</a> <div id="testing"></div> </body> </html> 

Y cuando haces clic en el enlace Prueba, muestra:

 Prueba n  uno dos         

El website actual funciona perfectamente pero no usa ajax y está en el mismo server donde lo hago, así que ¿cómo puedo decirle a jquery que devuelva ISO-8859-1 en lugar de lo que devuelve? Sé que lo ideal es usar siempre utf-8, pero cambiar a utf-8 nos dará algunos problemas que no podemos permitirnos en este momento.

Para que el browser utilice la encoding correcta, debe agregar un encabezado HTTP a la página php:

 header("Content-Type: text/plain; charset=ISO-8859-1"); 

o podría poner la encoding en una metalabel del html:

 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 

En su file php, necesitará codificar UTF-8 en la salida:

 echo utf8_encode("nº one two € áéíóú"); 

Y luego en tu file html necesitarás configurar el juego de caracteres:

 <html> <head> <meta charset="utf-8"/> ... 

Y para una buena práctica, especifique también un tipo de documento:

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> ... 

<!DOCTYPE html> es un doctype legítimo de HTML5 .


Y como señaló Pranav Kapoor , tal vez necesitará especificar también el set de caracteres PHP-file:

 header("Content-Type: text/plain; charset=UTF-8"); 

Veo que ha especificado su ISO-8859-1 caracteres para: ISO-8859-1 . Siempre trabajo con UTF-8 Puede leer más sobre esto aquí: ¿Cuál es la diferencia entre UTF-8 e ISO-8859-1?

Pero elimina el contentType de tu llamada ajax