Heim  >  Artikel  >  php教程  >  So konvertieren Sie die Dateikodierung unter Linux in UTF-8

So konvertieren Sie die Dateikodierung unter Linux in UTF-8

高洛峰
高洛峰Original
2016-11-16 09:13:071787Durchsuche

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

So konvertieren Sie die Dateikodierung unter Linux in UTF-8

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

So konvertieren Sie die Dateikodierung unter Linux in UTF-8

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

So konvertieren Sie die Dateikodierung unter Linux in UTF-8

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.



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn