Los que llevamos trabajando con GNU/Linux unos años (casi un par de decadas ya) hemos sufrido los inconvenientes asociados al soporte de distintos juegos de caracteres. En los inicios las distribuciones no traían por defecto activado el soporte del sistema de codificación ISO-8859-1, por lo que conseguir nuestros caracteres con tilde ("jamón") era imposible, y no hablemos de conseguir nuestra letrita española: "ñ".
Así, era tarea obligada conseguir que las diversas aplicaciones, y todo el entorno, soportara ese juego de caracteres. Tras algunos ajustes en diversos ficheros de configuración la sonrisa brillaba en nuestra cara cuando conseguíamos, al fin, escribir sin problemas en nuestro expresivo idioma.
Uno de esos ajustes aún pervivía en mis ficheros de configuración: mi ".emacs" incluía las siguientes líneas:
)
Esto provocaba que, aún hoy cuando el sistema de codificación por defecto y anchamente utilizado (y recomendado) es utf-8, mi genial editor emacs seguía utilizando el sistema de codificación de antaño, lo que provocaba problemas de visualización posteriores de esos ficheros con otras herramientas que, automáticamente, querían utilizar el sistema de codificación más actual: había un choque entre el antiguo iso-8859-1 y el nuevo utf-8. Podéis ver un ejemplo de lo que ocurría en la siguiente figura:
Tocaba, pues, investigar como convertir los ficheros con sistema de codificación antiguo al nuevo. ¿Cuál es el sistema de codificación antiguo en el que están codificados esos ficheros que se ven con extraños caracteres? ¿Cómo podemos saberlo? Fácil, abrimos con emacs el fichero, pulsamos Ctrl-H Shift(Mayús)-C y aparece la siguiente frase en la línea de comandos del editor: "Describe coding system (default current choices): ", pulsamos "Intro" y obtenemos algo parecido a esto:
Default coding system (for new files):
u -- mule-utf-8 (alias: utf-8)
Coding system for keyboard input:
nil
Coding system for terminal output:
u -- utf-8 (alias of mule-utf-8)
Defaults for subprocess I/O:
decoding: u -- mule-utf-8 (alias: utf-8)
encoding: u -- mule-utf-8 (alias: utf-8)
Fijaos en el primer par de líneas. El fichero está siendo grabado en el sistema de codificación en el que ha sido leído, en nuestro caso: iso-latin-1-unix. Por tanto, el proceso de conversión ha de ser de iso-latin-1-unix a utf-8.
Bien, instalamos una pequeña y útil herramienta (al más puro estilo UNIX):
Miramos su página de manual:
Y procedemos a la conversión:
Observamos que el filtro que hay que utilizar (obtenido de la página de manual) para llevar a cabo la conversión que nos interesa se llama iso1-utf8, el fichero de entrada, el origen que queremos convertir, es csgodo, y el de salida, ya convertido a utf-8 es csgod. Lo vemos con un visor: more, less, etc. Comprobamos que está bien y sobrescribimos nuestro fichero original:
A continuación podéis observar el resultado tras la conversión:
¡Objetivo conseguido!
Por último, para comprobar que tenéis vuestro entorno configurado para trabajar con el sistema de codificación utf-8 por defecto, basta hacer:
Si no tenemos esos locales en nuestro sistema podemos cambiar los que actualmente tengamos haciendo uso, como root, del siguiente comando:
Nos aparecerá una lista, nos movemos por ella con "Av Pág / Re Pág" o con los cursores, seleccionamos/deseleccionamos con la barra espaciadora, y cuando tengamos lo que queremos pulsamos "Tab" y nos vamos hasta "Aceptar". Pulsamos "Intro".
Y, claro está, no olvidéis borrar del fichero de configuración de emacs (~/.emacs) las líneas que mencionaba más arriba. Desde la versión 22 emacs es capaz de adaptarse a lo configurado en nuestro entorno.
Salud.