Kuinka muuntaa tiedostot UTF-8-koodaukseksi Linuxissa


Tässä oppaassa kuvataan merkkien koodaus ja katetaan muutama esimerkki tiedostojen muuntamisesta merkkikoodauksesta toiseen komentorivityökalulla. Lopuksi tarkastelemme kuinka muuntaa useita tiedostoja mistä tahansa merkistöstä (merkkisarjasta) UTF-8-koodaukseen Linuxissa.

Kuten ehkä olet jo ajatellut, tietokone ei ymmärrä tai tallenna kirjaimia, numeroita tai mitään muuta, mitä me ihmisinä voimme havaita paitsi bittiä. Bittillä 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 merkkikoodaus on tapa ilmoittaa tietokoneelle kuinka tulkita raakat nollat ja nollat todellisiksi merkeiksi, joissa merkki on esitetty joukkoina. Kun kirjoitamme tekstiä tiedostoon, muodostamamme sanat ja lauseet kypsennetään erilaisista merkeistä ja merkit järjestetään merkistöksi.

On olemassa useita koodausmenetelmiä, kuten ASCII, ANSI, Unicode mm. Alla on esimerkki ASCII-koodauksesta.

Character  bits
A               01000001
B               01000010

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

Voit tarkistaa tiedoston koodauksen tiedostokomennolla käyttämällä -i tai --mime -lippua, joka mahdollistaa mime-tyyppisen merkkijonon tulostamisen alla olevien esimerkkien mukaisesti:

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

Syntaksi iconv: n käytölle 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ähdekoodaus.

Voit luetella kaikki tunnetut koodatut merkistöjoukot suorittamalla alla olevan komennon:

$ iconv -l 

Muunna tiedostot UTF-8: sta ASCII-koodaukseen

Seuraavaksi opimme muuntamaan koodausjärjestelmästä toiseen. Alla oleva komento muuntaa ISO-8859-1: stä UTF-8-koodaukseksi.

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

� � � �

Aloitetaan tarkistamalla tiedoston merkkien koodaus ja tarkastelemalla sitten tiedoston sisältöä. Lähes voimme muuntaa kaikki merkit ASCII-koodaukseksi.

Kun olet suorittanut iconv -komennon, tarkistamme sitten tulostetiedoston sisällön ja merkkien uuden koodauksen alla.

$ 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, merkit, joita ei voi muuntaa, ja virhe näkyy muuntamisen jälkeen.

Jälleen olettaen, että merkkijono /TRANSLIT lisätään koodaukseen kuten yllä olevassa esimerkissä (ASCII/TRANSLIT), muunnettavat merkit translitteroidaan tarpeen mukaan ja jos mahdollista. Mikä tarkoittaa sitä, että merkkiä ei voida edustaa kohdemerkkijoukossa, se voidaan arvioida yhden tai useamman samankaltaisen merkin avulla.

Näin ollen kaikki merkit, joita ei voida translitteroida ja joita ei ole kohdemerkistöissä, korvataan tulosteessa kysymysmerkillä (?) .

Muunna useita tiedostoja UTF-8-koodaukseksi

Palataksemme pääaiheeseemme, voit muuntaa useita tai kaikkia hakemistossa olevia tiedostoja UTF-8-koodaukseksi kirjoittamalla pienen komentosarjakoodin 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 komentosarja suoritettavaksi. Suorita se hakemistosta, jossa tiedostosi ( * .txt ) sijaitsevat.

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

Tärkeää: Voit käyttää tätä komentosarjaa myös useiden tiedostojen yleiseen muuntamiseen tietystä koodauksesta toiseen, pelaamalla muuttujien FROM_ENCODING ja TO_ENCODING arvoilla, ei unohdetaan tulostetiedoston nimi "& # 36 {tiedosto% .txt} .utf8.muunnettu" .

Lisätietoja on iconv man -sivulla.

$ man iconv

Tämän oppaan yhteenvetona on ymmärtää, että koodaus ja kuinka muuntaa merkkikoodausjärjestelmästä toiseen on jokaisen tietokoneen käyttäjän tarvitsema tieto, etenkin ohjelmoijille, kun on kyse tekstin käsittelystä.

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