UTF-8 y ISO-8859-1: Codificación

Linux Tutorial


A lo largo del día de hoy he tenido una serie de problemas por consecuencia de la codificación de diferentes caracteres como vocales acentuadas, la “ñ”…

Precisamente este problema me ha surgido al realizar mi currículum vítae como he mencionado en un post anterior mediante el paquete moderncv de LaTeX. Este paquete precisamente requiere el uso de la codificación UTF-8, en lugar de ISO-8859-1, que es la que uso yo por defecto.

¿Qué es esto de la codificación? Pues no es más que la forma en la que se codifican internamente los caracteres que manejamos, es decir, la traducción a “unos y ceros” de cada carácter que introducimos en el ordenador.

  • UTF-8 (8-bit Unicode Transformation Format) Es una codificación de caracteres de longitud variable que permite la codificación de muchos de los lenguajes del mundo. Concretamente usa de 1 a 4 bytes por caracter dependiendo del símbolo y es muy usado para la transmisión de correo.
  • ISO 8859-1 (ISO Latín 1) Define la codificación del alfabeto latino empleado para lenguas como español, italiano, portugués, francés, alemán… En este caso, esta norma emplea 8 bits para la codificación de los caracteres.

Una vez presentadas las claras diferencias entre estos sistemas de codificación, pasaremos a mostrar cómo cambiar la codificación de nuestro entorno GNU/Linux y en el caso de optar por el editor GNU Emacs el procedimiento a seguir:

  1. Primero instalaremos el soporte para otras codificaciones de caracteres de GNU Emacs:# sudo apt-get install mule-ucs
  2. Comprobamos si existe el locale adecuado:$ locale -a | grep utf
  3. Si no es así, deberemos crearlo, para lo que introduciremos:# sudo localedef -i es_ES -f UTF-8 es_ES.utf8
  4. Seguidamente, indicamos que queremos establecer UTF-8 como locale. Para ello tecleamos lo siguiente y en caso de pretender que sea para toda sesión, lo incluiremos en .bashrc:$ export LANG="es_ES.utf8"
    $ export LC ALL="es_ES.utf8"
  5. Por último y para verificar que hemos procedido correctamente, verificaremos el contenido del locale y ya podremos usar UTF-8 en todo nuestro entorno, incluido GNU Emacs.$ locale

Si en lugar de establecer la codificación UTF-8 para todo nuestro entorno, lo que buscamos es un cambio momentáneo de codificación para nuestro editor GNU Emacs procederemos del siguiente modo:

$ M-x set-buffer-file-coding-system "Enter" utf-8 "Enter"

De este modo la codificación del buffer pasará a ser UTF-8.

Si lo que buscamos es usar siempre GNU Emacs con la citada codificación bastará con incorporar las siguientes líneas a nuestro ~/.emacs:

(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(prefer-coding-system 'utf-8)

Por último, indicar que si lo que queremos es modificar la codificación de un determinado archivo basta con introducir la siguiente línea por consola:

$ iconv -f iso-8859-1 -t utf-8 fichero_iso.txt -o fichero_utf.txt

Tras lo indicado, queda todo perfectamente aclarado entorno a los formatos de codificación del título, la forma de modificar nuestro locale y la conversión de formato. Ahora sólo queda que elijas el formato de codificación a emplear y configures tu sistema en base a esa elección.

Suscríbete!!

Seguro que también te interesa

2 Comentarios ↓

  • Ruben Molina el 12 de Julio de 2007 a las 15:21

    El paquete ‘moderncv’ no requiere el uso de utf8…

    Si quieres usar iso-latin1, puedes especificarlo al cargar el paquete ‘inputenc’:

    \usepackage[latin1]{inputenc}

  • Jaluro el 13 de Julio de 2007 a las 9:14

    Ajam, gracias Ruben. La verdad es que imagino que obvié la carga de latin1 y por eso tenía problemas.

    En cualquier caso, me vino bien para empaparme de todo el cambio de codificación entre UTF y latin.

    Ciao y muchas gracias ;)

Deja tu comentario

Por favor, no uses un lenguaje inapropiado, spam o cualquier otro tipo de conducta inadecuada. De lo contrario me reservo el derecho de eliminar y/o modificar aquellos comentarios que contengan algo de lo citado anteriormente.

:) xD :)) =)) ;) :p :( :(( #-o 8-| :-l :o :-? :-< :-s :^) m|-) m:| :s :$ (y) (n) /:) <:o) :)>- :-ss [-o< @:d/ ^:)^ m:d m:@ m:p m;) (h) :'( :mrgreen: (ap) (au) (ci) (co) (6) (&) (@) ~:> (8) (~) (g) (^) ~o) (h5) (yn) (pi) (pl) (l) (f) (k) (u) (w) 8-x :[ o-+ o-> o=>