In diesem Handbuch werden wir beschreiben, welche Charaktercodierung einige Beispiele für das Konvertieren von Dateien von einer Zeichencodierung zu einem anderen unter Verwendung eines Befehlszeilen -Tools abdecken. Schließlich werden wir uns ansehen, wie mehrere Dateien aus jedem Zeichensatz konvertiert werden können (Charset) ZuUTF-8Codierung in Linux.
Wie Sie wahrscheinlich bereits im Sinn haben, versteht oder speichert ein Computer Buchstaben, Zahlen oder etwas anderes, das wir als Menschen außer Bits wahrnehmen können. Ein bisschen hat nur zwei mögliche Werte, das ist entweder a0
oder1
Anwesendtrue
oderfalse
Anwesendyes
oderno
. Jede andere Sache wie Buchstaben, Zahlen und Bilder müssen in Bits dargestellt werden, damit ein Computer verarbeitet werden kann.
In einfachen Worten,CharaktercodierungIst eine Möglichkeit, einem Computer zu informieren, wie man rohe Nullen und solche in tatsächliche Zeichen interpretiert, wobei ein Charakter durch eine Reihe von Zahlen dargestellt wird. Wenn wir Text in eine Datei eingeben, werden die von uns bildenden Wörter und Sätze aus verschiedenen Zeichen gekocht, und Zeichen werden in a organisiertCharset.
Es gibt verschiedene Codierungsschemata, wie z.ASCIIAnwesendAnsiAnwesendUnicodeunter anderem. Unten ist ein Beispiel vonASCIICodierung.
Character bits A 01000001 B 01000010
In Linux, dieIkonvDas Befehlszeilen -Tool wird verwendet, um Text von einer Codierungsform in eine andere zu konvertieren.
Sie können die Codierung einer Datei mit dem überprüfenDateiBefehl mit der Verwendung der-i
oder--mime
Flag, das das Drucken der MIME -Zeichenfolge wie in den folgenden Beispielen ermöglicht:
$ file -i Car.java $ file -i CarDriver.java

Die Syntax für die VerwendungIkonvist wie folgt:
$ iconv option $ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
Wo-f
oder--from-code
bedeutet Eingabecodierung und-t
oder--to-encoding
Gibt die Ausgangscodierung an.
Um alle bekannten codierten Zeichensätze aufzulisten, führen Sie den folgenden Befehl aus:
$ iconv -l

Konvertieren Sie Dateien von UTF-8 in ASCII-Codierung
Als nächstes werden wir lernen, wie man von einem Codierungsschema in ein anderes konvertiert. Der folgende Befehl konvertiert vonISO-8859-1ZuUTF-8Codierung.
Betrachten Sie eine Datei mit dem Nameninput.file
Welches enthält die Zeichen:
� � � �
Beginnen wir mit der Codierung der Zeichen in der Datei und dann die Dateiinhalte anzeigen. Eng können wir alle Charaktere in umwandelnASCIICodierung.
Nach dem Laufen derIkonvBefehl, dann überprüfen wir den Inhalt der Ausgabedatei und die neue Encodierung der Zeichen wie unten.
$ 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

Notiz: Falls die Zeichenfolge//IGNORE
wird zu Tocoding hinzugefügt, Zeichen, die nicht konvertiert werden können, und nach der Konvertierung wird ein Fehler angezeigt.
Angenommen, die Zeichenfolge//TRANSLIT
wird wie im obigen Beispiel zu To-Coding hinzugefügt (ASCII // Translit), werden die Zeichen, die konvertiert werden, nach Bedarf und nach Möglichkeit transliteriert. Dies impliziert, dass ein Charakter im Zielzeichensatz nicht dargestellt werden kann, es kann durch ein oder mehrere ähnlich aussehende Zeichen angenähert werden.
Folglich wird jedes Zeichen, das nicht transliteriert werden kann und nicht im Zielzeichen ist, durch ein Fragezeichen ersetzt(?)
im Ausgang.
Konvertieren Sie mehrere Dateien in die UTF-8-Codierung
Wenn Sie zu unserem Hauptthema zurückkehren, um mehrere oder alle Dateien in einem Verzeichnis in UTF-8-Codierung umzuwandeln, können Sie ein kleines Shell-Skript auf dem neuesten Stand schreibencoding.shwie folgt:
#!/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 ausführbar. Führen Sie es aus dem Verzeichnis aus, in dem Ihre Dateien (Ihre Dateien (*.txt
) befinden sich.
$ chmod +x encoding.sh $ ./encoding.sh
Wichtig: Sie können dieses Skript auch für die allgemeine Konvertierung mehrerer Dateien von einer gegebenen Codierung zum anderen verwenden.FROM_ENCODING
UndTO_ENCODING
Variable, nicht vergessener den Namen Ausgabedatei zu vergessen"${file%.txt}.utf8.converted"
.
Weitere Informationen finden Sie durch dieIkonvMann Seite.
$ man iconv
Um diesen Leitfaden zusammenzufassen, das Verständnis der Codierung und der Konvertierung von einem Charakter -Codierungsschema in ein anderes ist für jeden Computer -Benutzer mehr für Programmierer, wenn es um den Umgang mit Text geht.
Zuletzt können Sie sich mit uns in Verbindung setzen, indem Sie den folgenden Kommentarbereich für Fragen oder Feedback verwenden.