La consola de Linux – Cambiar el charset de un fichero

Un problema habitual cuando se trabaja con varios idiomas son los caracteres que no se usan en inglés (tildes, diéresis, cedillas, etc…). Si en algún momento necesitas cambiar el charset de un  fichero puedes usar el siguiente comando:

iconv --from-code=ISO-8859-1 --to-code=UTF-8 fichero_origen.txt > fichero_destino.txt

Eso sí, muchísimo cuidado, no se puede usar el mismo fichero como origen y destino ya que se vaciará su contenido.

Puedes usar este script para hacer el cambio en un único paso:

cp $1 $1.temp
iconv --from-code=ISO-8859-1 --to-code=UTF-8 $1.temp > $1
rm $1.temp

Puedes guardarlo en un fichero llamado ‘cambiar_charset’ y luego darle premisos de ejecución:

chmod +x cambiar_charset

Ejemplo de uso:

./cambiar_chaset mifichero.txt

 

 

PHP: Cambiar el set de caracteres en una consulta MySQL

Existe una función, que he de reconocer no conocía, que permite cambiar el set de caracteres (charset) cuando hacemos una consulta a MySQL.

Por ejemplo, si queremos asegurarnos que los datos que vamos a introducir en la base de datos van a estar en UTF-8 usaremos:

mysql_set_charset('utf8',$link);

(donde el parámetro $link, como en casi todas las funciones para mysql, es opcional).

Esta función se ha incorporado en la versión PHP 5 (5.0.7) y por lo visto también está disponible en la versión PHP 4 (a partir de la 4.1.13). En los comentarios de la documentación de PHP han aportado este código que hace que mysql_set_charset funcione también en versiones anteriores de PHP:

<?php
 if (function_exists('mysql_set_charset') === false) {
     function mysql_set_charset($charset, $link_identifier = null)
     {
         if ($link_identifier == null) {
             return mysql_query('SET NAMES "'.$charset.'"');
         } else {
             return mysql_query('SET NAMES "'.$charset.'"', $link_identifier);
         }
     }
 }
 ?>