Website-Suche

So konvertieren Sie Dateien in UTF-8-Kodierung unter Linux


In diesem Handbuch beschreiben wir die Zeichenkodierung und behandeln einige Beispiele für die Konvertierung von Dateien von einer Zeichenkodierung in eine andere mithilfe eines Befehlszeilentools. Abschließend schauen wir uns an, wie man unter Linux mehrere Dateien aus einem beliebigen Zeichensatz (charset) in die UTF-8-Kodierung konvertiert.

Wie Sie wahrscheinlich bereits wissen, versteht oder speichert ein Computer keine Buchstaben, Zahlen oder alles andere, was wir als Menschen außer Bits wahrnehmen können. Ein Bit hat nur zwei mögliche Werte, nämlich entweder 0 oder 1, true oder false, ja oder nein. Alle anderen Dinge wie Buchstaben, Zahlen und Bilder müssen in Bits dargestellt werden, damit ein Computer sie verarbeiten kann.

Einfach ausgedrückt ist die Zeichenkodierung eine Möglichkeit, einem Computer mitzuteilen, wie er rohe Nullen und Einsen in tatsächliche Zeichen interpretieren soll, wobei ein Zeichen durch eine Reihe von Zahlen dargestellt wird. Wenn wir Text in eine Datei eingeben, werden die Wörter und Sätze, die wir bilden, aus verschiedenen Zeichen zusammengesetzt und die Zeichen werden in einem Zeichensatz organisiert.

Es gibt verschiedene Kodierungsschemata wie ASCII, ANSI, Unicode und andere. Nachfolgend finden Sie ein Beispiel für die ASCII-Kodierung.

Character  bits
A               01000001
B               01000010

Unter Linux wird das Befehlszeilentool iconv verwendet, um Text von einer Codierungsform in eine andere zu konvertieren.

Sie können die Kodierung einer Datei mit dem Befehl file überprüfen, indem Sie das Flag -i oder --mime verwenden, das das Drucken im MIME-Typ ermöglicht string wie in den folgenden Beispielen:

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

Die Syntax für die Verwendung von iconv lautet wie folgt:

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

Dabei bedeutet -f oder --from-code die Eingabekodierung und -t oder --to-encoding spezifiziert Ausgabekodierung.

Führen Sie den folgenden Befehl aus, um alle bekannten codierten Zeichensätze aufzulisten:

iconv -l 

Konvertieren Sie Dateien von UTF-8 in ASCII-Kodierung

Als nächstes lernen wir, wie man von einem Kodierungsschema in ein anderes konvertiert. Der folgende Befehl konvertiert von der Kodierung ISO-8859-1 in die Kodierung UTF-8.

Stellen Sie sich eine Datei mit dem Namen input.file vor, die die folgenden Zeichen enthält:


� � � �

Lassen Sie uns zunächst die Kodierung der Zeichen in der Datei überprüfen und dann den Dateiinhalt anzeigen. Genau genommen können wir alle Zeichen in die ASCII-Kodierung konvertieren.

Nachdem wir den Befehl iconv ausgeführt haben, überprüfen wir den Inhalt der Ausgabedatei und die neue Kodierung der Zeichen wie unten beschrieben.

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 

Hinweis: Falls die Zeichenfolge //IGNORE zur Kodierung hinzugefügt wird, werden Zeichen angezeigt, die nicht konvertiert werden können, und es wird ein Fehler angezeigt nach der Konvertierung.

Angenommen, die Zeichenfolge //TRANSLIT wird wie im obigen Beispiel zur to-encoding hinzugefügt (ASCII//TRANSLIT), die konvertierten Zeichen werden nach Bedarf und wenn möglich transkribiert . Das heißt, für den Fall, dass ein Zeichen nicht im Zielzeichensatz dargestellt werden kann, kann es durch ein oder mehrere ähnlich aussehende Zeichen angenähert werden.

Folglich wird jedes Zeichen, das nicht transkribiert werden kann und nicht im Zielzeichensatz enthalten ist, in der Ausgabe durch ein Fragezeichen (?) ersetzt.

Konvertieren Sie mehrere Dateien in die UTF-8-Kodierung

Zurück zu unserem Hauptthema: Um mehrere oder alle Dateien in einem Verzeichnis in die UTF-8-Kodierung zu konvertieren, können Sie ein kleines Shell-Skript namens encoding.sh wie folgt schreiben:

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

Speichern Sie die Datei und machen Sie das Skript dann ausführbar. Führen Sie es aus dem Verzeichnis aus, in dem sich Ihre Dateien (*.txt) befinden.

chmod  +x  encoding.sh
./encoding.sh

Wichtig: Sie können dieses Skript auch für die allgemeine Konvertierung mehrerer Dateien von einer bestimmten Kodierung in eine andere verwenden, indem Sie einfach mit den Werten von FROM_ENCODING herumspielen und die Variable TO_ENCODING, nicht zu vergessen den Namen der Ausgabedatei "$ {file%.txt}.utf8.converted".

Weitere Informationen finden Sie auf der Manpage iconv.

man iconv

Zusammenfassend lässt sich sagen, dass das Verständnis der Codierung und die Konvertierung von einem Zeichencodierungsschema in ein anderes für jeden Computerbenutzer erforderliche Kenntnisse sind, insbesondere für Programmierer, wenn es um den Umgang mit Text geht.

Schließlich können Sie über den Kommentarbereich unten mit uns in Kontakt treten, wenn Sie Fragen oder Feedback haben.