Com convertir fitxers a codificació UTF-8 a Linux


En aquesta guia, descriurem quina codificació de caràcters i tractarem alguns exemples de conversió de fitxers d'una codificació de caràcters a una altra mitjançant una eina de línia d'ordres. Aleshores, finalment, veurem com convertir diversos fitxers de qualsevol conjunt de caràcters (conjunt de caràcters) a la codificació UTF-8 a Linux.

Com probablement ja tingueu en compte, un ordinador no entén ni emmagatzema lletres, números o qualsevol altra cosa que els humans puguem percebre, excepte els bits. Un bit només té dos valors possibles, és a dir, un 0 o un 1, true o fals, >sí o no. Qualsevol altra cosa, com ara lletres, números, imatges, s'han de representar en bits perquè un ordinador pugui processar-se.

En termes senzills, la codificació de caràcters és una manera d'informar a un ordinador com interpretar zeros i uns en brut en caràcters reals, on un caràcter es representa mitjançant un conjunt de números. Quan escrivim text en un fitxer, les paraules i frases que formem es preparen a partir de diferents caràcters i els caràcters s'organitzen en un conjunt de caràcters.

Hi ha diversos esquemes de codificació com ara ASCII, ANSI, Unicode, entre d'altres. A continuació es mostra un exemple de codificació ASCII.

Character  bits
A               01000001
B               01000010

A Linux, l'eina de línia d'ordres iconv s'utilitza per convertir text d'una forma de codificació a una altra.

Podeu comprovar la codificació d'un fitxer mitjançant l'ordre de fitxer, utilitzant el senyalador -i o --mime que permet imprimir una cadena de tipus MIME com en els exemples següents:

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

La sintaxi per utilitzar iconv és la següent:

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

On -f o --from-code significa codificació d'entrada i -t o --to-encoding especifica codificació de sortida.

Per llistar tots els conjunts de caràcters codificats coneguts, executeu l'ordre següent:

$ iconv -l 

Converteix fitxers de codificació UTF-8 a ASCII

A continuació, aprendrem a convertir d'un esquema de codificació a un altre. L'ordre següent converteix la codificació ISO-8859-1 a UTF-8.

Penseu en un fitxer anomenat input.file que conté els caràcters:

� � � �

Comencem comprovant la codificació dels caràcters del fitxer i després visualitzem el contingut del fitxer. De prop, podem convertir tots els caràcters a codificació ASCII.

Després d'executar l'ordre iconv, comprovem el contingut del fitxer de sortida i la nova codificació dels caràcters com a continuació.

$ 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 

Nota: en cas que la cadena //IGNORE s'afegeixi a la codificació, els caràcters que no es poden convertir i es mostra un error després de la conversió.

De nou, suposant que la cadena //TRANSLIT s'afegeix a la codificació com a l'exemple anterior (ASCII//TRANSLIT), els caràcters que s'estan convertint es transliteren segons sigui necessari i si és possible. El que implica que en el cas que un personatge no es pugui representar al conjunt de caràcters objectiu, es pot aproximar mitjançant un o més caràcters semblants.

En conseqüència, qualsevol caràcter que no es pugui transliterar i que no estigui al conjunt de caràcters de destinació se substitueix per un signe d'interrogació (?) a la sortida.

Converteix diversos fitxers a codificació UTF-8

Tornant al nostre tema principal, per convertir diversos o tots els fitxers d'un directori a la codificació UTF-8, podeu escriure un petit script d'intèrpret d'ordres anomenat encoding.sh de la següent 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

Deseu el fitxer i, a continuació, feu que l'script sigui executable. Executeu-lo des del directori on es troben els vostres fitxers (*.txt).

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

Important: també podeu utilitzar aquest script per a la conversió general de diversos fitxers d'una codificació determinada a una altra, simplement juga amb els valors de la variable FROM_ENCODING i TO_ENCODING, no oblidant el nom del fitxer de sortida \$ {file%.txt}.utf8.converted\.

Per obtenir més informació, mireu la pàgina de manual iconv.

$ man iconv

Per resumir aquesta guia, entendre la codificació i com convertir d'un esquema de codificació de caràcters a un altre és un coneixement necessari per a cada usuari d'ordinador, més encara per als programadors quan es tracta de tractar el text.

Finalment, podeu posar-vos en contacte amb nosaltres utilitzant la secció de comentaris a continuació per a qualsevol pregunta o comentari.