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.