En un momento determinado, me decidí a cambiar el charset de todos mis a UTF-8 para evitar el eterno problema de caracteres extraños.
Si bien en php podemos hacer ésto sin tener que tocar los archivos fuente habilitando el output buffering:
ob_start(); echo "Mi cadena de prueba"; echo utf8_encode(ob_get_clean());
Lo ideal es evitar todo éste overhead transformando todo nuestro código, base de datos y archivos a UTF-8. Ésto a la larga nos evitará muchisimos quebraderos de cabeza, sobre todo si tenemos que hacer una web con varios idiomas.
En el caso de los archivos, podemos convertirlos fácilmente a UTF8 desde linux con el comando iconv.
# iconv --from-code=ISO-8859-1 --to-code=UTF-8 MIARCHIVO.php -o MIARCHIVO_UTF8.php
Modo de empleo:
iconv [OPCIÓN...] [FICHERO...]
Convierte la codificación de los ficheros dados de una codificación a otra.
Especificación de formato de Entrada/Salida:
-f, --from-code=NOMBRE codificación del texto original
-t, --to-code=NOMBRE codificación para el resultado
Información:
-l, --list lista todos los juegos de caracteres conocidos
Control del resultado:
-c se omiten los caracteres inválidos en la salida
-o, --output=FILE fichero de salida
-s, --silent suprime los avisos
--verbose muestra información sobre el desarrollo
En el caso de que queramos hacer conversiones masivas de todos los archivos php (o de otro tipo) de un directorio hay que instalar el recode (iconv no permite sobreescribir archivos).
# yum install recode (Fedora, Red Hat, Centos...) # apt-get install recode (Debian y Ubuntu)
# find . -name *.php -exec recode -d ISO-8859-1..UTF-8 '{}' ;
Recordad hacer primero una copia de seguridad, ya que recode sobreescribirá los archivos.
Espero que os sirva de ayuda.
Comentarios recientes