El programa iconv es un filtro que permite convertir la codificaciones de texto utilizada por fichero de texto a otra diferente.
iconv resulta especialmente útil si encuentras errores en los en la representación de caracteres extendidos, tales como vocales acentuadas, eñes, diacríticos y demás símbolos.
Cada fichero de texto plano recibe una codificación determinada, la cual especifica la manera en la cual se describen los caracteres que la componen. Cada una de dichas codificaciones por defecto se representarán de acuerdo a la codificación especificada localmente por el usuario (por ejemplo,utf-8, etc.
El texto convertido se presenta en la salida estándar.
Ver también: Acentos y Eñes en texto-plano
Primero te convendrá utilizar el programa file para conocer cuál es la codificación actual del fichero de texto que deseas convertir (pues no son pocos los sistemas operativos que asignan metadatos a los mismos que permiten dilucidar cómo están codificados). De esta manera:
file fichero.txt
fichero.txt: Codepage CP850 extended-ASCII text
Sabiendo qué codificiación tiene (en este ejemplo, Codepage CP850 extended-ASCII text, podrás ahora usar iconv con mayor efectividad.
iconv convertirá desde una codificación dada con la opción de origen -f, a otra indicada con la opción de destino -t.
Por ejemplo, para convertir fichero.txt desde la antigua codificación Codepage CP850 al estándar UTF-8 empleando en Linux, y mostrarlo en pantalla (sin guardarlo), podrás ingresar:
iconv -f cp850 -t utf8 fichero.txt
Una vez que estés satisfecho con la conversión en pantalla, podrás realizarla a un fichero por medio de una redirección:
iconv -f cp850 -t utf8 < fichero.txt > fichero_convertido.txt
Si deseas una referencia, podrás ver un listado textual de las distintas codificaciones de texto incorporadas al sistema con:
iconv -l
Encontrarás aquí algunos ejemplos prácticos bastante utilizados
Podrías querer convertir de UNICODE a ASCII, para trabajar en una máquina o sistema de cómputo antiguo:
iconv -f UTF-8 -t ASCII//TRANSLIT < ficheroUNICODE.txt > ficheroASCII.txt
Podrás querer convertir un viejo fichero de MS-DOS a un estándar UTF8:
iconv -f cp437 -t utf8 < fichero_dos.txt > fichero_utf8.txt
Esto te permitirá convertir ficheros típicos preparados por Windows 95, 98, Me, XP, a UTF8 para usar en Linux:
iconv -f WINDOWS-1252 -t utf8 < fichero_windows.txt > fichero_utf.txt
Convertir en sentido inverso (desde una codificación “moderna” a una antigua) puede presentar limitaciones, pero puede servir en algunos casos.
cat fichero_con_acentos.txt ¿La Eñe? ¡Claro que sí! cat fichero_con_acentos.txt | iconv -t ASCII//TRANSLIT > fichero_ascii.txt cat fichero_ascii.txt ?La e~ne? !Claro que s'i!