martes, 10 de noviembre de 2009

Intercambio entre distintas codificaciones de caracteres.

La codificación de caracteres es una norma o código que se sigue para representar información en distintos formatos, dicho con un ejemplo que sea algo más cercano, es por ejemplo el código Morse.

Normalmente usamos el ordenador sin pensar en cómo codifica lo que escribimos, pero eso cambia cuando tenemos que intercambiar esa información entre distintas formas de codificación. Ésto es justamente lo que ocurre cuando se intercambia cierta información entre sistemas operativos que usan codificaciones diferentes.
Concretando de nuevo con un ejemplo, si se tiene un archivo fuente escrito en \LaTeX en un sistema operativo tipo windows, su codificación en castellano seguramente será Latin-1 (o también puede ser Latin-9), y al abrirlo en otro sistema operativo diferente, tipo Unix por ejemplo, que use UTF-8, se verán caracteres extraños y la compilación dará seguramente errores (pasará lo mismo si se hace en sentido contrario).

Para solucionar este problema, hay varias opciones; una es el cambio de codificación del archivo, que es de lo que trata esta entrada, así que doy algunas opciones que he visto:
  • Usar GNU recode, tiene bastantes opciones de uso, y se encuentra para varios sistemas operativos. Aunque aún no tiene conversión en todos los sentidos, por lo que recomiendo el siguiente sistema.
  • Usar LibIconv, es también GNU, está disponible para varios sistemas operativos (en GNU/Linux suele venir incluido, y en windows lo puedes bajar de aquí), es fácil de usar y convierte en todos los sentidos (al menos en los que yo he probado funciona bien).
El manejo de LibIconv es tan simple como este simple comando:

iconv -f latin1 -t utf-8 archivo1.tex > archivo2.tex

-f es para indicar la codificación de origen (from) en el ejemplo es latin1, -t indica la codificación hacia la que quieres convertir el archivo (to) en el ejmplo es utf-8, y por tanto archivo1.tex es el archivo de origen que queremos convertir y archivo2.tex es el archivo final que obtendremos convertido.

Advertencia: hay algunos editores (por ejemplo Kile) que visualizan algunos caracteres convertidos de forma incorrecta, aunque compilan el código correctamente. Seguiremos buscando una mejor solución al problema, mientras tanto la solución propuesta es aceptable.

Si tienes alguna sugerencia, duda..., coméntala. Más información y referencias como el uso del comando file de GNU/Linux (que es un comando muy interesante para saber la naturaleza de un archivo y la codificación que usa independientemente de su extensión o aquí).

1 comentario:

  1. Una dire más sobre el tema:

    http://www.ebitacora.com/codificacion-de-archivos-iso-8859-1-a-utf-8-desde-linux.html


    Y siguiendo el consejo de un buen amigo latexero (gm), este cambio de codificación se puede realizar también sobre la configuración de algunos editores (los editores que lo permitan, claro), como por ejemplo los siguientes:

    En Kile:

    Setting
    Configure
    Editor
    Open and save
    Encoding


    En TeXMaker:

    Opciones
    Configurar Texmaker
    Editor
    Codificación del editor

    Si sabes cómo hacerlo en otros editores coméntanoslo ;).

    ResponderEliminar