Weboldal keresés

Fájlok konvertálása UTF-8 kódolásra Linux alatt


Ebben az útmutatóban leírjuk, hogy milyen karakterkódolást alkalmazunk, és néhány példát mutatunk be fájlok konvertálására egyik karakterkódolásról a másikra egy parancssori eszköz segítségével. Végül megvizsgáljuk, hogyan konvertálhat több fájlt bármilyen karakterkészletből (karakterkészlet) UTF-8 kódolásba Linux alatt.

Amint valószínűleg már gondoltad, a számítógép nem érti és nem tárolja a betűket, számokat vagy bármi mást, amit mi, emberek, a biteken kívül észlelni tudunk. Egy bitnek csak két lehetséges értéke van, ez egy 0 vagy 1, true vagy false, >igen vagy nem. Minden más dolgot, például betűket, számokat, képeket bitekben kell ábrázolni, hogy a számítógép feldolgozhassa.

Egyszerűen fogalmazva, a karakterkódolás egy módja annak, hogy tájékoztassa a számítógépet arról, hogyan értelmezze a nyers nullákat és egyeseket tényleges karakterekké, ahol egy karaktert számkészlettel ábrázolnak. Amikor szöveget írunk be egy fájlba, az általunk alkotott szavak és mondatok különböző karakterekből állnak össze, és a karakterek karakterkészletbe vannak rendezve.

Különféle kódolási sémák léteznek, például ASCII, ANSI, Unicode. Az alábbiakban egy példa látható az ASCII kódolásra.

Character  bits
A               01000001
B               01000010

Linuxban az iconv parancssori eszköz a szövegek egyik kódolási formájából a másikba való konvertálására szolgál.

A fájl kódolását a file paranccsal ellenőrizheti a -i vagy a --mime jelző használatával, amely lehetővé teszi a MIME típusú nyomtatást. karakterlánc, mint az alábbi példákban:

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

Az iconv használatának szintaxisa a következő:

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

Ahol -f vagy --from-code bemeneti kódolást jelent, a -t vagy --to-encoding pedig kimeneti kódolás.

Az összes ismert kódolt karakterkészlet felsorolásához futtassa az alábbi parancsot:

iconv -l 

Fájlok konvertálása UTF-8-ról ASCII-kódolásra

Ezután megtanuljuk, hogyan lehet egyik kódolási sémáról a másikra konvertálni. Az alábbi parancs az ISO-8859-1 kódolásról UTF-8 kódolásra konvertál.

Vegyünk egy input.file nevű fájlt, amely a következő karaktereket tartalmazza:


� � � �

Kezdjük azzal, hogy ellenőrizzük a karakterek kódolását a fájlban, majd nézzük meg a fájl tartalmát. Szorosan az összes karaktert átalakíthatjuk ASCII kódolásra.

Az iconv parancs futtatása után ellenőrizzük a kimeneti fájl tartalmát és a karakterek új kódolását az alábbiak szerint.

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 

Megjegyzés: Ha az //IGNORE karakterlánc hozzáadódik a kódoláshoz, akkor a nem konvertálható karakterek és hibaüzenet jelenik meg átalakítás után.

Feltéve, ha a fenti példában (ASCII//TRANSLIT) a //TRANSLIT karakterlánc hozzáadódik a kódoláshoz, a konvertálandó karakterek szükség szerint átírásra kerülnek, és ha lehetséges . Ami azt jelenti, hogy abban az esetben, ha egy karakter nem ábrázolható a célkarakterkészletben, egy vagy több hasonló kinézetű karakterrel közelíthető.

Következésképpen minden olyan karakter, amely nem transzliterálható, és nem szerepel a célkarakterkészletben, egy kérdőjelre kerül (?) a kimenetben.

Több fájl konvertálása UTF-8 kódolásra

Visszatérve a fő témánkhoz, egy könyvtár több vagy összes fájljának UTF-8 kódolásra való konvertálásához írhat egy encoding.sh nevű kis shell szkriptet az alábbiak szerint:

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

Mentse el a fájlt, majd tegye futtathatóvá a szkriptet. Futtassa abból a könyvtárból, ahol a fájlok (*.txt) találhatók.

chmod  +x  encoding.sh
./encoding.sh

Fontos: Ezt a szkriptet több fájl általános konvertálására is használhatja egyik adott kódolásról a másikra, egyszerűen csak játsszon a FROM_ENCODING értékeivel. és TO_ENCODING változót, nem felejtve el a kimeneti fájl nevét: "$ {file%.txt}.utf8.converted".

További információért tekintse meg az iconv kézikönyvoldalt.

man iconv

Összefoglalva ezt az útmutatót, a kódolás megértése és az egyik karakterkódolási sémáról a másikra való átalakítás szükséges ismerete minden számítógép-felhasználó számára, különösen a programozók számára, amikor szövegekkel kell foglalkozni.

Végül felveheti velünk a kapcsolatot az alábbi megjegyzés részben, ha bármilyen kérdése vagy visszajelzése van.