Kako pretvoriti datoteke v kodiranje UTF-8 v Linuxu


V tem priročniku bomo opisali, kakšno kodiranje znakov, in zajeli nekaj primerov pretvorbe datotek iz enega kodiranja v drugega z orodjem ukazne vrstice. Nato bomo končno preučili, kako pretvoriti več datotek iz katerega koli nabora znakov (nabora znakov) v kodiranje UTF-8 v Linuxu.

Kot ste verjetno že imeli v mislih, računalnik ne razume in ne shranjuje črk, številk ali česar koli drugega, kar lahko kot ljudje zaznamo razen bitov. Bit ima samo dve možni vrednosti, to je 0 ali 1 , true ali false , da ali ne . Vse druge stvari, kot so črke, številke, slike, morajo biti predstavljene v delih, da jih lahko računalnik obdela.

Preprosto povedano, kodiranje znakov je način obveščanja računalnika, kako interpretirati neobdelane ničle in enote v dejanske znake, pri čemer je znak predstavljen z naborom števil. Ko vtipkamo besedilo v datoteko, so besede in stavki, ki jih tvorimo, pripravljeni iz različnih znakov, znaki pa so razvrščeni v nabor znakov.

Obstajajo različne sheme kodiranja, na primer ASCII, ANSI, Unicode. Spodaj je primer kodiranja ASCII.

Character  bits
A               01000001
B               01000010

V Linuxu se orodje ukazne vrstice iconv uporablja za pretvorbo besedila iz ene oblike kodiranja v drugo.

Kodiranje datoteke lahko preverite z ukazom datoteke z uporabo zastavice -i ali --mime , ki omogoča tiskanje niza vrste mime, kot v spodnjih primerih:

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

Sintaksa uporabe iconv je naslednja:

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

Kjer -f ali --from-code pomeni vhodno kodiranje in -t ali --to-encoding določa izhodno kodiranje.

Če želite seznam vseh znanih kodiranih naborov znakov, zaženite spodnji ukaz:

$ iconv -l 

Pretvori datoteke iz UTF-8 v ASCII kodiranje

Nato se bomo naučili pretvoriti iz ene sheme kodiranja v drugo. Spodnji ukaz pretvori iz kodiranja ISO-8859-1 v kodiranje UTF-8.

Razmislite o datoteki z imenom input.file , ki vsebuje znake:

� � � �

Začnimo s preverjanjem kodiranja znakov v datoteki in si nato oglejmo vsebino datoteke. V bližini lahko pretvorimo vse znake v ASCII kodiranje.

Po zagonu ukaza iconv preverimo vsebino izhodne datoteke in novo kodiranje znakov, kot je prikazano spodaj.

$ 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 

Opomba: Če je kodiranju dodan niz /IGNORE , se znaki, ki jih ni mogoče pretvoriti, po pretvorbi prikažejo napake.

Če spet predpostavimo, da je niz /TRANSLIT dodan kodiranju, kot v zgornjem primeru (ASCII/TRANSLIT), se pretvorjeni znaki po potrebi transliterirajo in če je mogoče. Kar pomeni, da v primeru, da znaka ni mogoče predstaviti v ciljnem naboru znakov, ga je mogoče približati z enim ali več podobnimi znaki.

Posledično se kateri koli znak, ki ga ni mogoče prečrkovati in ni v ciljnem naboru znakov, v izhodu nadomesti z vprašajem (?) .

Pretvori več datotek v kodiranje UTF-8

Če se vrnemo k naši glavni temi, če želite pretvoriti več ali vse datoteke v imeniku v kodiranje UTF-8, lahko napišete majhen skript lupine z imenom encoding.sh, kot sledi:

#!/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

Shranite datoteko in nato naredite skript izvedljiv. Zaženite ga iz imenika, v katerem so vaše datoteke ( * .txt ).

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

Pomembno: Ta skript lahko uporabite tudi za splošno pretvorbo več datotek iz enega danega kodiranja v drugega, preprosto se poigrajte z vrednostmi spremenljivk FROM_ENCODING in TO_ENCODING , ne pozabitev imena izhodne datoteke \"& # 36 {file% .txt} .utf8.converted \" .

Za več informacij si oglejte manv stran iconv.

$ man iconv

Če povzamemo ta priročnik, je razumevanje kodiranja in pretvorbe iz ene sheme kodiranja znakov v drugo nujno znanje za vsakega uporabnika računalnika, še bolj pa za programerje, ko gre za besedilo.

Nazadnje lahko stopite v stik z nami v spodnjem razdelku s komentarji za kakršna koli vprašanja ali povratne informacije.