Wéi konvertéiert Dateien op UTF-8 Kodéierung op Linux


An dësem Guide wäerte mir beschreiwen wéi eng Zeechekodéierung an e puer Beispiller fir d'Konvertéierung vun Dateien vun engem Charakterkodéierung an en anert mat engem Kommandozeil-Tool ofdecken. Dann schlussendlech wäerte mir kucken wéi verschidde Dateien aus all Zeecheset (Charset) op UTF-8 Kodéierung am Linux konvertéiert ginn.

Wéi Dir wahrscheinlech schonn am Kapp hutt, versteet oder späichert e Computer keng Buschtawen, Zuelen oder soss wat mir als Mënschen ausser Bits kënne gesinn. E Bit huet nëmmen zwee méiglech Wäerter, dat ass entweder e 0 oder 1, true oder false, >jo oder nee. All aner Saache wéi Buschtawen, Zuelen, Biller mussen a Stécker vertruede sinn fir e Computer ze veraarbecht.

An einfache Begrëffer, Charakter Kodéierung ass e Wee fir e Computer z'informéieren wéi rau Nullen an Een an aktuell Zeechen interpretéiert ginn, wou e Charakter duerch Set vun Zuelen vertruede gëtt. Wa mir Text an enger Datei tippen, ginn d'Wierder a Sätz, déi mir bilden, aus verschiddene Charaktere gekacht, an d'Charaktere ginn an e Charset organiséiert.

Et gi verschidde Kodéierungsschemaen dobaussen wéi ASCII, ANSI, Unicode ënner anerem. Drënner ass e Beispill vun ASCII Kodéierung.

Character  bits
A               01000001
B               01000010

Am Linux gëtt de iconv Kommandozeil Tool benotzt fir Text vun enger Form vu Kodéierung an eng aner ze konvertéieren.

Dir kënnt d'Kodéierung vun enger Datei mam Dateikommando iwwerpréiwen, andeems Dir de -i oder --mime Fändel benotzt, deen d'Dréckerei vun der Mime-Typ String erlaabt wéi an de Beispiller hei drënner:

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

D'Syntax fir iconv ze benotzen ass wéi follegt:

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

Wou -f oder --vum-Code heescht Input Kodéierung an -t oder --zu-Kodéierung spezifizéiert Ausgangskodéierung.

Fir all bekannt kodéiert Zeechesets ze lëschten, fuert de Kommando hei ënnen:

$ iconv -l 

Konvertéiert Dateien vun UTF-8 op ASCII Kodéierung

Als nächst wäerte mir léieren wéi Dir vun engem Kodéierungsschema an en anert konvertéiert. De Kommando hei drënner konvertéiert vun ISO-8859-1 op UTF-8 Kodéierung.

Betruecht e Fichier mam Numm input.file deen d'Zeechen enthält:

� � � �

Loosst eis ufänken andeems Dir d'Kodéierung vun den Zeechen an der Datei iwwerpréift an dann d'Dateiinhalt kucken. Enk kënne mir all d'Charaktere an ASCII Kodéierung konvertéieren.

Nodeems Dir de iconv Kommando ausgefouert hutt, iwwerpréift mir dann den Inhalt vun der Ausgabdatei an déi nei Kodéierung vun de Charaktere wéi hei ënnen.

$ 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 

Bemierkung: Am Fall wou d'String //IGNORE un d'Kodéierung bäigefüügt gëtt, Zeechen déi net ëmgewandelt kënne ginn an e Feeler gëtt no der Konversioun ugewisen.

Nach eng Kéier, ugeholl datt d'String //TRANSLIT un d'Kodéierung bäigefüügt gëtt wéi am Beispill hei uewen (ASCII//TRANSLIT), Zeechen, déi ëmgewandelt ginn, ginn transliteréiert wéi néideg a wa méiglech. Wat implizéiert am Fall datt e Charakter net am Zil-Zeechenset vertruede ka ginn, kann et duerch een oder méi ähnlech ausgesi Charaktere geschätzt ginn.

Dofir gëtt all Charakter, deen net transliteréiert ka ginn an net am Zil-Zeechenset ass, duerch e Fragezeechen (?) am Ausgang ersat.

Konvertéiert Multiple Dateien op UTF-8 Kodéierung

Wann Dir zréck op eist Haaptthema kënnt, fir méi oder all Dateien an engem Verzeechnes op UTF-8 Kodéierung ze konvertéieren, kënnt Dir e klenge Shell-Skript genannt encoding.sh wéi follegt schreiwen:

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

Späichert d'Datei, da maacht de Skript ausführbar. Fëllt et aus dem Verzeechnes wou Är Dateien (*.txt) sinn.

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

Wichteg: Dir kënnt och dëst Skript benotzen fir allgemeng Konversioun vu multiple Dateien vun enger bestëmmter Kodéierung op déi aner, einfach mat de Wäerter vun der FROM_ENCODING an TO_ENCODING Variabel ronderëm spillen, net vergiessen den Ausgangsdatei Numm \$ {file%.txt}.utf8.converted\.

Fir méi Informatioun, kuckt duerch d'Ikonv Man Säit.

$ man iconv

Fir dëse Guide ze resuméieren, d'Kodéierung ze verstoen a wéi een vun engem Charakter Kodéierungsschema an en anert konvertéiert ass néideg Wëssen fir all Computerbenotzer méi fir Programméierer wann et ëm den Text geet.

Schlussendlech kënnt Dir mat eis kontaktéieren andeems Dir de Kommentarsektioun hei drënner benotzt fir all Froen oder Feedback.