Kaip konvertuoti failus į UTF-8 kodavimą „Linux“.


Šiame vadove apibūdinsime, kokia simbolių koduotė, ir pateiksime kelis pavyzdžius, kaip konvertuoti failus iš vienos simbolių koduotės į kitą naudojant komandinės eilutės įrankį. Galiausiai pažvelgsime, kaip konvertuoti kelis failus iš bet kurio simbolių rinkinio (ženklų rinkinio) į UTF-8 koduotę sistemoje „Linux“.

Kaip tikriausiai jau turėjote omenyje, kompiuteris nesupranta ir nesaugo raidžių, skaičių ar nieko kito, ką mes, žmonės, galime suvokti, išskyrus bitus. Bitas turi tik dvi galimas reikšmes, tai yra 0 arba 1, true arba false, >taip arba ne. Visi kiti dalykai, tokie kaip raidės, skaičiai, vaizdai, turi būti pavaizduoti bitais, kad kompiuteris galėtų apdoroti.

Paprastais žodžiais tariant, simbolių kodavimas yra būdas informuoti kompiuterį, kaip neapdorotus nulius ir vienetus interpretuoti į tikrus simbolius, kai simbolis vaizduojamas skaičių rinkiniu. Kai įvedame tekstą į failą, mūsų formuojami žodžiai ir sakiniai yra sudaryti iš skirtingų simbolių, o simboliai suskirstomi į simbolių rinkinį.

Yra įvairių kodavimo schemų, tokių kaip ASCII, ANSI, Unicode ir kt. Toliau pateikiamas ASCII kodavimo pavyzdys.

Character  bits
A               01000001
B               01000010

Linux sistemoje iconv komandų eilutės įrankis naudojamas tekstui konvertuoti iš vienos kodavimo formos į kitą.

Failo kodavimą galite patikrinti naudodami komandą file, naudodami vėliavėlę -i arba --mime, kuri leidžia spausdinti mime tipą eilutę, kaip parodyta toliau pateiktuose pavyzdžiuose:

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

Naudojimo iconv sintaksė yra tokia:

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

Kur -f arba --from-code reiškia įvesties kodavimą, o -t arba --to-kodavimas nurodo išvesties kodavimas.

Norėdami išvardyti visus žinomus koduotus simbolių rinkinius, paleiskite toliau pateiktą komandą:

iconv -l 

Konvertuokite failus iš UTF-8 į ASCII kodavimą

Toliau išmoksime konvertuoti iš vienos kodavimo schemos į kitą. Toliau pateikta komanda konvertuoja iš ISO-8859-1 į UTF-8 kodavimą.

Apsvarstykite failą pavadinimu input.file, kuriame yra simbolių:


� � � �

Pradėkime nuo failo simbolių kodavimo patikrinimo, tada peržiūrėkime failo turinį. Tiksliau, galime konvertuoti visus simbolius į ASCII koduotę.

Paleidę komandą iconv, patikriname išvesties failo turinį ir naują simbolių kodavimą, kaip nurodyta toliau.

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 

Pastaba: jei prie kodavimo pridedama eilutė //IGNORE, rodomi simboliai, kurių negalima konvertuoti, ir rodoma klaida po konvertavimo.

Vėlgi, jei prie kodavimo pridedama eilutė //TRANSLIT, kaip nurodyta anksčiau pateiktame pavyzdyje (ASCII//TRANSLIT), konvertuojami simboliai yra transliteruojami, jei reikia ir, jei įmanoma. . Tai reiškia, kad jei simbolis negali būti pavaizduotas tiksliniame simbolių rinkinyje, jis gali būti apytikslis naudojant vieną ar daugiau panašiai atrodančių simbolių.

Todėl bet koks simbolis, kurio negalima transliteruoti ir kuris nėra tiksliniame simbolių rinkinyje, išvestyje pakeičiamas klaustuku (?).

Konvertuokite kelis failus į UTF-8 kodavimą

Grįžtant prie pagrindinės temos, norėdami konvertuoti kelis arba visus katalogo failus į UTF-8 koduotę, galite parašyti nedidelį apvalkalo scenarijų, pavadintą encoding.sh, kaip nurodyta toliau:

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

Išsaugokite failą, tada padarykite scenarijų vykdomąjį. Paleiskite jį iš katalogo, kuriame yra jūsų failai (*.txt).

chmod  +x  encoding.sh
./encoding.sh

Svarbu: taip pat galite naudoti šį scenarijų bendram kelių failų konvertavimui iš vienos nurodytos koduotės į kitą, tiesiog pažaiskite su FROM_ENCODING reikšmėmis. ir kintamąjį TO_ENCODING, nepamirštant išvesties failo pavadinimo "$ {file%.txt}.utf8.converted".

Norėdami gauti daugiau informacijos, peržiūrėkite iconv man puslapį.

man iconv

Apibendrinant šį vadovą, supratimas apie kodavimą ir kaip konvertuoti iš vienos simbolių kodavimo schemos į kitą yra būtinos žinios kiekvienam kompiuterio vartotojui, tuo labiau programuotojui, kai kalbama apie tekstą.

Galiausiai, jei turite klausimų ar atsiliepimų, galite susisiekti su mumis naudodami toliau pateiktą komentarų skyrių.