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.