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.