Tiedostojen muuntaminen UTF-8-koodaukseksi Linuxissa


Tässä oppaassa kuvailemme merkkikoodausta ja käsittelemme muutamia esimerkkejä tiedostojen muuntamisesta merkistökoodauksesta toiseen komentorivityökalulla. Lopuksi tarkastellaan kuinka muuntaa useita tiedostoja mistä tahansa merkistöstä (merkkisarjasta) UTF-8-koodaukseen Linuxissa.

Kuten ehkä jo muistatkin, tietokone ei ymmärrä tai tallenna kirjaimia, numeroita tai mitään muuta, mitä me ihmiset voimme havaita paitsi bittejä. Bitillä on vain kaksi mahdollista arvoa, jotka ovat joko 0 tai 1, true tai false, >kyllä tai ei. Kaikki muut asiat, kuten kirjaimet, numerot, kuvat, on esitettävä bitteinä, jotta tietokone voi käsitellä niitä.

Yksinkertaisesti sanottuna merkkien koodaus on tapa kertoa tietokoneelle, kuinka raakanollat ja ykköset tulkitaan todellisiksi merkeiksi, joissa merkki esitetään numerosarjana. Kun kirjoitamme tekstiä tiedostoon, muodostamamme sanat ja lauseet muodostuvat eri merkeistä ja merkit järjestetään merkkisarjaksi.

Siellä on erilaisia koodausmalleja, kuten ASCII, ANSI ja Unicode. Alla on esimerkki ASCII-koodauksesta.

Character  bits
A               01000001
B               01000010

Linuxissa iconv-komentorivityökalua käytetään tekstin muuntamiseen yhdestä koodausmuodosta toiseen.

Voit tarkistaa tiedoston koodauksen file-komennolla käyttämällä -i- tai --mime-lippua, joka mahdollistaa mime-tyypin tulostamisen. merkkijono kuten alla olevissa esimerkeissä:

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

iconv-funktion syntaksi on seuraava:

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

Missä -f tai --from-code tarkoittaa syötekoodausta ja -t tai --to-encoding määrittää lähdön koodaus.

Luettele kaikki tunnetut koodatut merkistöt suorittamalla alla oleva komento:

iconv -l 

Muunna tiedostot UTF-8:sta ASCII-koodaukseen

Seuraavaksi opimme muuttamaan koodausmenetelmästä toiseen. Alla oleva komento muuntaa ISO-8859-1-koodauksen UTF-8-koodaukseksi.

Harkitse tiedostoa nimeltä input.file, joka sisältää seuraavat merkit:


� � � �

Aloitetaan tarkistamalla tiedoston merkkien koodaus ja sitten tarkastellaan tiedoston sisältöä. Voimme muuntaa kaikki merkit ASCII-koodaukseen.

Kun olet suorittanut iconv-komennon, tarkistamme tulostiedoston sisällön ja merkkien uuden koodauksen alla kuvatulla tavalla.

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 

Huomaa: jos merkkijono //IGNORE lisätään koodaukseen, merkkejä, joita ei voida muuntaa, näytetään virhe. muuntamisen jälkeen.

Jälleen, jos merkkijono //TRANSLIT lisätään koodaukseen kuten yllä olevassa esimerkissä (ASCII//TRANSLIT), muunnettavat merkit translitteroidaan tarvittaessa ja jos mahdollista. . Mikä tarkoittaa, että jos merkkiä ei voida esittää kohdemerkkijoukossa, se voidaan arvioida yhden tai useamman samannäköisen merkin avulla.

Näin ollen kaikki merkit, joita ei voida translitteroida ja jotka eivät ole kohdemerkkijoukossa, korvataan tulosteessa kysymysmerkillä (?).

Muunna useita tiedostoja UTF-8-koodaukseen

Palatakseni pääaiheeseemme, jos haluat muuntaa useita tai kaikki hakemiston tiedostot UTF-8-koodaukseen, voit kirjoittaa pienen komentosarjan nimeltä encoding.sh seuraavasti:

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

Tallenna tiedosto ja tee komentosarjasta suoritettava. Suorita se hakemistosta, jossa tiedostosi (*.txt) sijaitsevat.

chmod  +x  encoding.sh
./encoding.sh

Tärkeää: Voit myös käyttää tätä komentosarjaa useiden tiedostojen yleiseen muuntamiseen yhdestä annetusta koodauksesta toiseen, vain leikitellä FROM_ENCODING arvoilla. ja TO_ENCODING -muuttuja, unohtamatta tulostiedoston nimeä "$ {file%.txt}.utf8.converted".

Lisätietoja saat iconv-man-sivulta.

man iconv

Yhteenvetona tästä oppaasta voidaan todeta, että koodauksen ymmärtäminen ja muuntaminen merkistökoodauskaaviosta toiseen on tarpeellista tietoa jokaiselle tietokoneen käyttäjälle, varsinkin ohjelmoijille, kun kyse on tekstin käsittelystä.

Lopuksi voit ottaa meihin yhteyttä käyttämällä alla olevaa kommenttiosiota, jos sinulla on kysyttävää tai palautetta.