Cómo convertir archivos a codificación UTF-8 en Linux


En esta guía, describiremos qué codificación de caracteres y cubriremos algunos ejemplos de conversión de archivos de una codificación de caracteres a otra utilizando una herramienta de línea de comandos. Finalmente, veremos cómo convertir varios archivos de cualquier conjunto de caracteres ( charset ) a la codificación UTF-8 en Linux.

Como probablemente ya tengas en mente, una computadora no entiende o almacena letras, números o cualquier otra cosa que nosotros, como seres humanos, podamos percibir, excepto los bits. Un bit solo tiene dos valores posibles, es decir, 0 o 1 , true o false , o no . Todas las demás cosas, como letras, números, imágenes, deben representarse en bits para que la computadora las procese.

En términos simples, codificación de caracteres es una forma de informar a una computadora cómo interpretar los ceros en bruto y los unos en caracteres reales, donde un carácter está representado por un conjunto de números. Cuando escribimos texto en un archivo, las palabras y las oraciones que formamos están elaboradas con diferentes caracteres, y los caracteres se organizan en un conjunto de caracteres .

Existen varios esquemas de codificación como ASCII , ANSI , Unicode entre otros. A continuación se muestra un ejemplo de codificación ASCII .

Character  bits
A               01000001
B               01000010

En Linux, la herramienta de línea de comandos iconv se usa para convertir texto de una forma de codificación a otra.

Puede verificar la codificación de un archivo utilizando el comando archivo , utilizando el indicador -i o --mime que permite la impresión de tipo mime cadena como en los ejemplos a continuación:

$ file -i Car.java
$ file -i CarDriver.java

La sintaxis para usar iconv es la siguiente:

$ iconv option
$ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile 

Donde -f o --from-code significa codificación de entrada y -t o --to-encoding especifica codificación de salida.

Para enumerar todos los juegos de caracteres codificados conocidos, ejecute el siguiente comando:

$ iconv -l 

Convertir archivos de UTF-8 a la codificación ASCII

A continuación, aprenderemos cómo convertir de un esquema de codificación a otro. El siguiente comando convierte de ISO-8859-1 a UTF-8 .

Considere un archivo llamado input.file que contiene los caracteres:

� � � �

Comencemos verificando la codificación de los caracteres en el archivo y luego veamos el contenido del archivo. De cerca, podemos convertir todos los caracteres a codificación ASCII .

Después de ejecutar el comando iconv , luego verificamos el contenido del archivo de salida y la nueva codificación de los caracteres como se muestra a continuación.

$ file -i input.file
$ cat input.file 
$ iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file
$ cat out.file 
$ file -i out.file 

rojo

De nuevo, al suponer que la cadena /TRANSLIT se agrega a la codificación como en el ejemplo anterior ( ASCII/TRANSLIT ), los caracteres que se convierten se transcriben según sea necesario y, si es posible . Lo que implica que, en caso de que un personaje no se pueda representar en el conjunto de caracteres objetivo, se puede aproximar a través de uno o más personajes de aspecto similar.

En consecuencia, cualquier carácter que no pueda transliterarse y que no esté en el conjunto de caracteres objetivo se reemplaza con un signo de interrogación (?) en la salida.

Convertir varios archivos a codificación UTF-8

Volviendo a nuestro tema principal, para convertir varios o todos los archivos en un directorio a codificación UTF-8, puede escribir un pequeño script de shell llamado encoding.sh de la siguiente manera:

#!/bin/bash
#enter input encoding here
FROM_ENCODING="value_here"
#output encoding(UTF-8)
TO_ENCODING="UTF-8"
#convert
CONVERT=" iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING"
#loop to convert multiple files 
for  file  in  *.txt; do
     $CONVERT   "$file"   -o  "${file%.txt}.utf8.converted"
done
exit 0

Guarde el archivo, luego haga el script ejecutable. Ejecútelo desde el directorio donde se encuentran sus archivos ( * .txt ).

$ chmod  +x  encoding.sh
$ ./encoding.sh

rojo

Para obtener más información, consulte la página de manual de iconv .

$ man iconv

Para resumir esta guía, comprender la codificación y cómo convertir de un esquema de codificación de caracteres a otro es un conocimiento necesario para todos los usuarios de computadoras, más para los programadores cuando se trata de texto.

Por último, puede ponerse en contacto con nosotros utilizando la sección de comentarios a continuación para cualquier pregunta o comentario.