Kako pretvoriti datoteke u UTF-8 kodiranje u Linuxu


U ovom vodiču ćemo opisati koje kodiranje znakova i pokriti nekoliko primjera pretvaranja datoteka iz jednog kodiranja znakova u drugi pomoću alata komandne linije. Zatim ćemo konačno pogledati kako pretvoriti nekoliko datoteka iz bilo kojeg skupa znakova (charset) u UTF-8 kodiranje u Linuxu.

Kao što možda već imate na umu, kompjuter ne razumije niti pohranjuje slova, brojeve ili bilo šta drugo što mi kao ljudi možemo percipirati osim bitova. Bit ima samo dvije moguće vrijednosti, to je ili 0 ili 1, true ili false, >da ili ne. Sve druge stvari kao što su slova, brojevi, slike moraju biti predstavljene u bitovima da bi ih kompjuter mogao obraditi.

Jednostavno rečeno, kodiranje znakova je način informiranja računara kako da interpretira neobrađene nule i jedinice u stvarne znakove, gdje je znak predstavljen skupom brojeva. Kada unesemo tekst u datoteku, riječi i rečenice koje formiramo sastavljene su od različitih znakova, a znakovi su organizirani u skup znakova.

Postoje razne šeme kodiranja kao što su ASCII, ANSI, Unicode između ostalih. Ispod je primjer ASCII kodiranja.

Character  bits
A               01000001
B               01000010

U Linuxu se alat za naredbenu liniju iconv koristi za pretvaranje teksta iz jednog oblika kodiranja u drugi.

Možete provjeriti kodiranje datoteke pomoću naredbe file, korištenjem -i ili --mime zastavice koja omogućava štampanje mime tipa niz kao u primjerima ispod:

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

Sintaksa za korištenje iconv je sljedeća:

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

Gdje -f ili --from-code znači ulazno kodiranje, a -t ili --to-encoding specificira izlazno kodiranje.

Da navedete sve poznate skupove kodiranih znakova, pokrenite naredbu ispod:

iconv -l 

Pretvorite datoteke iz UTF-8 u ASCII kodiranje

Zatim ćemo naučiti kako pretvoriti iz jedne sheme kodiranja u drugu. Naredba ispod se pretvara iz ISO-8859-1 u UTF-8 kodiranje.

Razmislite o fajlu pod nazivom input.file koji sadrži znakove:


� � � �

Počnimo tako što ćemo provjeriti kodiranje znakova u datoteci, a zatim pogledati sadržaj datoteke. Usko, možemo konvertovati sve znakove u ASCII kodiranje.

Nakon što pokrenemo naredbu iconv, zatim provjeravamo sadržaj izlazne datoteke i novo kodiranje znakova kao u nastavku.

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 

Napomena: U slučaju da je niz //IGNORE dodan u kodiranje, znakovi koji se ne mogu konvertirati i prikazuje se greška nakon konverzije.

Opet, pod pretpostavkom da je niz //TRANSLIT dodan u kodiranje kao u gornjem primjeru (ASCII//TRANSLIT), znakovi koji se pretvaraju se transliteriraju po potrebi i ako je moguće . Što znači da u slučaju da znak ne može biti predstavljen u ciljnom skupu znakova, može se aproksimirati kroz jedan ili više sličnih znakova.

Prema tome, svaki znak koji se ne može transliterirati i koji nije u ciljnom skupu znakova zamjenjuje se upitnikom (?) u izlazu.

Pretvorite više datoteka u UTF-8 kodiranje

Vraćajući se na našu glavnu temu, da konvertujete više ili sve datoteke u direktoriju u UTF-8 kodiranje, možete napisati malu shell skriptu pod nazivom encoding.sh na sljedeći način:

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

Sačuvajte datoteku, a zatim učinite skriptu izvršnom. Pokrenite ga iz direktorija u kojem se nalaze vaši fajlovi (*.txt).

chmod  +x  encoding.sh
./encoding.sh

Važno: Ovu skriptu možete koristiti i za generalnu konverziju više datoteka iz jednog datog kodiranja u drugi, jednostavno se poigrajte vrijednostima FROM_ENCODING i TO_ENCODING varijabla, ne zaboravljajući naziv izlazne datoteke "$ {file%.txt}.utf8.converted".

Za više informacija pogledajte man stranicu iconv.

man iconv

Da rezimiramo ovaj vodič, razumijevanje kodiranja i načina konverzije iz jedne sheme kodiranja znakova u drugu neophodno je znanje za svakog korisnika računara, a posebno za programere kada je u pitanju rad s tekstom.

Na kraju, možete nas kontaktirati koristeći odjeljak za komentare ispod za sva pitanja ili povratne informacije.