GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

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

Wie Sie vielleicht schon wissen, versteht oder speichert ein Computer keine Buchstaben, Zahlen oder irgendetwas anderes, was wir als Menschen wahrnehmen können, außer Bits. Ein Bit hat nur zwei mögliche Werte, also entweder eine 0 oder 1 , true oder false , yes oder no . Alle anderen Dinge wie Buchstaben, Zahlen und Bilder müssen in Bits dargestellt werden, damit ein Computer sie verarbeiten kann.

Einfach ausgedrückt, Zeichenkodierung ist 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 unter anderen. Unten sehen Sie ein Beispiel für ASCII Codierung.

Character  bits
A               01000001
B               01000010

Unter Linux ist das iconv Befehlszeilentool wird verwendet, um Text von einer Form der Kodierung in eine andere zu konvertieren.

Sie können die Codierung einer Datei mit der Datei überprüfen Befehl, indem Sie den -i verwenden oder --mime Flag, das das Drucken von Mime-Type-Strings wie in den folgenden Beispielen ermöglicht:

$ 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 

Wobei -f oder --from-code bedeutet Eingabekodierung und -t oder --to-encoding gibt die Ausgabecodierung an.

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

$ iconv -l 

Dateien von UTF-8 in ASCII-Kodierung konvertieren

Als nächstes lernen wir, wie man von einem Codierungsschema in ein anderes konvertiert. Der folgende Befehl konvertiert von ISO-8859-1 zu UTF-8 Codierung.

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

� � � �

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

Nach dem Ausführen des iconv Befehl, überprüfen wir dann den Inhalt der Ausgabedatei und die neue Kodierung 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 

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

Nehmen wir wieder den String //TRANSLIT an wird wie im obigen Beispiel zur To-Kodierung hinzugefügt (ASCII//TRANSLIT ), konvertierte Zeichen werden nach Bedarf und nach Möglichkeit transkribiert. Das bedeutet, falls ein Zeichen im Zielzeichensatz nicht dargestellt werden kann, kann es durch ein oder mehrere ähnlich aussehende Zeichen angenähert werden.

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

Mehrere Dateien in UTF-8-Kodierung umwandeln

Zurück zu unserem Hauptthema:Um mehrere oder alle Dateien in einem Verzeichnis in UTF-8-Codierung zu konvertieren, können Sie ein kleines Shell-Skript namens encoding.sh schreiben wie 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 dann ausführbar. Führen Sie es aus dem Verzeichnis aus, in dem Ihre Dateien (*.txt ) befinden.

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

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

Weitere Informationen finden Sie unter iconv Manpage.

$ man iconv

Zusammenfassend lässt sich sagen, dass das Verstehen der Codierung und das Konvertieren von einem Zeichencodierungsschema in ein anderes für jeden Computerbenutzer und insbesondere für Programmierer im Umgang mit Text ein notwendiges Wissen ist.

Zu guter Letzt können Sie sich mit uns in Verbindung setzen, indem Sie den Kommentarbereich unten für Fragen oder Feedback verwenden.


Linux
  1. So verschieben Sie eine Datei unter Linux

  2. So zeigen oder ändern Sie die ACL in Linux-Dateien

  3. So extrahieren Sie .gz- und .tar.gz-Dateien unter Linux

  4. Wie benenne ich eine Datei unter Linux um?

  5. So verwenden Sie Netcat zum Übertragen von Dateien unter Linux

So konvertieren Sie PDF-Dateien im Stapelbetrieb unter Linux

So entpacken Sie die gz-Dateien unter Linux

So verknüpfen Sie eine Datei unter Linux per Symlink

So finden Sie Dateien basierend auf dem Zeitstempel in Linux

So löschen Sie Dateien, die in einer anderen Datei unter Linux aufgeführt sind

So komprimieren Sie eine Datei unter Linux