Convirtiendo nuestros archivos a UTF-8 en linux

PHP, Shell, Unix Añadir comentario

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.

¿Tienes dudas, preguntas o comentarios?.

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Iniciar sesión