En muchas ocasiones he programado en lenguaje ASP páginas que devuelven datos en XML leyéndolos de una base de datos MySQL. Con el fin de que los datos almacenados en MySQL salgan con el formato correcto, lo mejor es trabajar en UTF-8. Para ello, es necesario guardar el archivo ASP que devuelve el XML en formato UTF-8 desde un editor avanzado gratuito como el PSPad. Además, hay que poner el siguiente código ASP antes que nada:

Response.CodePage = "65001"     ' Comentario: UTF-8
Response.write("<?xml version=""1.0"" encoding=""UTF-8""?>")

Pero cuando intentamos hacer lo mismo en lenguaje PHP podemos tener el problema de que los carácteres especiales no se muestran bien en pantalla. Haciendo lo mismo que con el ASP, guardando el archivo PHP que devuelve el XML en formato UTF-8 desde el editor avanzado y poniendo el siguiente código pueden haber problemas:

header("Content-type:text/xml; charset=utf-8");
echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";

Según me comentó un colega también programador web, parece que la comunicación con la base de datos MySQL no se está realizando en UTF-8. Para que se realice correctamente, hay que lanzar esta instrucción MySQL antes que nada:

mysql_query("SET NAMES UTF8");

Con esto se solucionan los problemas de codificación y los carácteres especiales se muestran bien en la web.

Etiquetas: , , , , , , , , , , , , , , , , , , , ,
Una Respuesta a “Codificación UTF-8 incorrecta en PHP leyendo una base de datos MySQL”
  1. fazulas dice:

    Gracias tío, llevaba tiempo yo peleándome, con esta historia en wamp server, ya que en el servidor se me veía perfectamente y gracias a tu entrada y una puta sentencia, añadida en el objeto que me realiza las operaciones con la base de datos todo solucionado..

    Un abrazo y graciassss xD.

  2.  
Deja una Respuesta