Si salen mal los caracteres de la base de datos mysql y en mysql tengo el mismo juego de caracteres (lo podemos ver a través de phpmyadmin) que en el origen entonces es cosa de los “locales” del servidor.

Los locales deben estar en UTF-8 es decir las variables LC_XXXX, comprobamos también que el servidor Apache tenga el UTF-8 activado. En el php.ini deberemos configurar:

default_charset = UTF-8

Para configurar los locales en Ubuntu ejecutamos:

#dpkg –configure locales

Para configurar el charset en Apache, editamos el archivo apache2.conf y observamos la línea:

AddDefaultCharset on //si esta línea existe Apache enviará iso-8859-1 entonces la solución es comentarla ó añadir la siguiente:

AddDefaultCharset UTF-8

Si usamos nuestros Content-types con su correspondiente charset, podemos deshabilitar tranquilamente la opción anterior.

Otra cosa que podemos hacer es asegurarnos de que el charset de mysql sea UTF-8:

shell> mysqld –default-character-set = UTF8


shell> vi /etc/mysql/my.conf

Añadimos estas líneas debajo de [mysqld]

#utf8

init-connect = ‘SET NAMES utf8′


character-set-server = utf8


collation-server = utf8_general_ci

Y con todo esto ya deberíamos haber solucionado el problema.



Dejar un comentario