lunes, 10 de septiembre de 2012

Codificación de ficheros de texto Linux/Windows

Vamos a ver unos ejemplos de como convertir diferentes ficheros de texto editados en sistemas Unix y/o Windows. En Linux los ficheros de texto se codifican mediante UTF-8 que es una de las tablas del estándar Unicode, pero en Windows no se sigue este estándar. Las instalaciones de Windows en castellano utilizan la tabla Windows-1252. Los ficheros de texto de Windows tienen una serie de caracteres especiales y ocultos para señalar el fin de línea, fin de fichero, etc. En Linux son diferentes y aunque en muchos casos puede abrir correctamente los ficheros de texto de Windows en otros casos no. Explicado esto vamos a presentar unas herramientas que nos serán de utilidad en alguno de los supuestos anteriores. dos2unix nos permite transformar estos archivos de formato Windows (DOS) a Linux. Un ejemplo: si disponemos de un fichero creado con el notepad, podemos comprobar su codificación con la herramienta file.
#file ejemplo.txt
ejemplo.txt: ASCII text, with CRLF line terminators
#dos2unix ejemplo.txt 
dos2unix: converting file ejemplo.txt to UNIX format ...
#file ejemplo.txt 
ejemplo.txt: ASCII text
unix2dos nos permite transformar estos archivos de formato Linux a Windows (DOS).
#unix2dos ejemplo.txt 
unix2dos: converting file ejemplo.txt to DOS format ...
#file ejemplo.txt 
ejemplo.txt: ASCII text, with CRLF line terminators
iconv nos permite cambiar la codificación del fichero de texto. iconv -f old-encoding -t new-encoding file.txt > newfile.txt
# iconv --from-code ASCII --to-code UTF-16 --output ejemplo.utf16 ejemplo.txt
# file ejemplo.utf8 ejemplo.txt ejemplo.utf8: Little-endian UTF-16 Unicode text, with CRLF, CR line terminators
ejemplo.txt:  ASCII text, with CRLF line terminators
convmv nos permite cambiar la codificación de los carácteres.
# convmv -f iso-8859-1 -t utf8 files
Con esta orden convertiremos todos los ficheros dentro del directorio files de iso-8859-1 a utf8.

No hay comentarios:

Publicar un comentario