In diesem Tutorial erklären wir, was Zeichenkodierung bedeutet, und geben dann einige Beispiele für die Verwendung von Befehlszeilentools zum Konvertieren von Dateien, die eine Zeichenkodierung in eine andere Kodierung verwenden. Abschließend schauen wir uns an, wie man Dateien mit verschiedenen Zeichenkodierungen in die UTF-8-Kodierung unter Linux konvertiert.
Sie wissen vielleicht bereits, dass Computer außer Binärdaten keine Zeichen, Zahlen oder alles andere verstehen und speichern können, was Menschen verstehen können. Ein Binärbit hat nur zwei mögliche Werte, nämlich 0 oder 1, wahr oder falsch, ja oder nein. Alles andere, wie Zeichen, Daten und Bilder, muss für die Computerverarbeitung in binärer Form dargestellt werden.
Einfach ausgedrückt ist eine Zeichenkodierung eine Möglichkeit, einen Computer anzuweisen, rohe Nullen und Einsen in tatsächliche Zeichen zu interpretieren. Bei diesen Zeichenkodierungen werden Zeichen als eine Folge von Zahlen dargestellt.
Es gibt viele Zeichenkodierungsschemata wie ASCII, ANCI, Unicode usw. Unten finden Sie ein Beispiel für die ASCII-Kodierung.
字符 二进制 A 01000001 B 01000010
Unter Linux wird das Befehlszeilentool iconv verwendet, um Text von einer Kodierung in eine andere zu konvertieren.
Sie können den Dateibefehl verwenden und den Parameter -i oder --mime hinzufügen, um die Zeichenkodierung einer Datei anzuzeigen. Mit diesem Parameter kann das Programm die MIME-Datei der Zeichenfolge wie im folgenden Beispiel ausgeben (Mehrzweck-Internet). (Mail-Erweiterungen) Daten:
$ file -i Car.java $ file -i CarDriver.java
Codierung der Datei unter Linux anzeigen
Das iconv-Tool wird wie folgt verwendet:
$ iconv option $ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
Hier gibt -f oder --from-code die Eingabekodierung an und -t oder --to-encoding gibt die Ausgabekodierung an.
Um alle vorhandenen codierten Zeichensätze aufzulisten, können Sie den folgenden Befehl verwenden:
$ iconv -l
Alle vorhandenen codierten Zeichensätze auflisten
Konvertieren Sie Dateien von der ISO-8859-1-Kodierung in die UTF-8-Kodierung
Im Folgenden erfahren Sie, wie Sie ein Kodierungsschema in ein anderes konvertieren. Der folgende Befehl konvertiert die ISO-8859-1-Kodierung in die UTF-8-Kodierung.
Betrachten Sie die folgende Datei input.file, die diese Zeichen enthält:
� � � �
Wir betrachten zunächst die Kodierung dieser Datei und dann den Dateiinhalt. Schließlich können wir alle Zeichen in die UTF-8-Kodierung konvertieren.
Nachdem wir den Befehl iconv ausgeführt haben, können wir den Inhalt der Ausgabedatei und die verwendete Zeichenkodierung wie folgt überprüfen.
$ 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
ISO-8859-1 in UTF-8 unter Linux konvertieren
Hinweis: Wenn das //IGNORE-Zeichen nach der Ausgabekodierung hinzugefügt wird Zeichenfolge werden die Zeichen, die nicht konvertiert werden können, nicht konvertiert und nach der Konvertierung zeigt das Programm eine Fehlermeldung an.
Nun, wenn die Zeichenfolge //TRANSLIT nach der Ausgabekodierung im obigen Beispiel hinzugefügt wird (UTF-8//TRANSLIT), werden die zu konvertierenden Zeichen versuchen, das Formularübersetzungsprinzip zu verwenden. Das heißt, wenn ein Zeichen im Ausgabekodierungsschema nicht dargestellt werden kann, wird es durch ein Zeichen mit einer ähnlichen Form ersetzt.
Wenn ein Zeichen nicht in der Ausgabekodierung enthalten ist und nicht entschlüsselt werden kann, wird es in der Ausgabedatei durch ein Fragezeichen ersetzt.
Mehrere Dateien in UTF-8-Kodierung konvertieren
Zurück zu unserem Thema. Wenn Sie mehrere Dateien oder sogar alle Dateien in einem bestimmten Verzeichnis in die UTF-8-Kodierung konvertieren möchten, können Sie ein einfaches Shell-Skript wie folgt schreiben und es „encoding.sh“ nennen:
#!/bin/bash ### 将 values_here 替换为输入编码 FROM_ENCODING="value_here" ### 输出编码 (UTF-8) TO_ENCODING="UTF-8" ### 转换命令 CONVERT=" iconv -f $FROM_ENCODING -t $TO_ENCODING" ### 使用循环转换多个文件 for file in *.txt; do $CONVERT "$file" -o "${file%.txt}.utf8.converted" done exit 0
Speichern Sie die Datei und Fügen Sie ausführbare Berechtigungen hinzu. Führen Sie dieses Skript in dem Verzeichnis aus, in dem sich die zu konvertierende Datei (*.txt) befindet.
$ chmod +x encoding.sh $ ./encoding.sh
Wichtig: Sie können dieses Skript auch allgemeiner gestalten, indem Sie beispielsweise eine bestimmte Zeichenkodierung in eine andere Kodierung konvertieren. Um dies zu erreichen, müssen Sie lediglich die Werte der Variablen FROM_ENCODING und TO_ENCODING ändern. Vergessen Sie nicht, den Dateinamen der Ausgabedatei in „${file%.txt}.utf8.converted“ zu ändern.
Weitere Informationen finden Sie in der Manpage von iconv.
$ man iconv
Um diesen Leitfaden zusammenzufassen: Das Verständnis des Konzepts der Zeichenkodierung und das Wissen, wie man ein Kodierungsschema in ein anderes umwandelt, ist Wissen, das ein Computerbenutzer beherrschen muss, wenn er Text verarbeitet, und ein Programmierer umso mehr.