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.