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.