staging.inyokaproject.org

Von „recode“ weitergeleitet.

Zeichensatz-Konverter

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Im Computerbereich gibt es eine Vielzahl von Zeichensätzen, nach denen Buchstaben für den Computer "kodiert" werden, wobei die Kodierungen in Teilen untereinander inkompatibel sind. Dies kann z.B. bedeuten, dass ein Text, der auf einem System mit dem voreingestellten Zeichensatz XYZ lesbar ist, während der gleiche Text auf dem System ABC nur aus Hieroglyphen besteht.

Der bekannteste Vertreter dieses Problems ist UTF-8 vs. ISO-8859-1. Hier werden alle "normalen" Buchstaben gleich dargestellt (bzw. kodiert), Sonderzeichen wie ä, ö und ü werden jedoch anderes kodiert, so dass bei falscher Zeichensatzeinstellung (im Browser oder Editor) stattdessen nur kryptische Zeichen dargestellt werden.

Ein weiteres, davon unabhängiges Problem ist, dass Linux- (bzw. Unix-) Systeme und Windows-Systeme unterschiedliche Kommandos für das Zeilenende nutzen. Während Windows als Zeilenende ein "CR + LF" (= Carriage Return + Line-Feed) verwendet, verwendet Linux nur "LF" (=Line-Feed). Dadurch kann es zur falschen Darstellung von Zeilenumbrüchen auf dem jeweils anderen System kommen.

Ubuntu bzw. Linux bietet hierfür jedoch einige Möglichkeiten, die Konvertierung von Texten von einem Zeichensatz in den anderen schnell und komfortabel zu erledigen.

Hinweis:

Es geht hier um die Konvertierung von Textdokumenten oder Dateinamen, nicht um die Konvertierung von Texten, die z.B. mit OpenOffice bzw. LibreOffice oder MS Office geschrieben wurden.

Konvertierung per Editor

Viele unter Ubuntu / Linux gängige Editoren bieten die Möglichkeit der Zeichensatz-Konvertierung und / oder Änderung des Zeichens für das Zeilenende.

Gedit

Gedit kann die Kodierung beim Speichern ändern, nicht jedoch die Zeilenendung. Um den Zeichensatz zu ändern wählt man "Datei → Speichern unter..." und kann dann im Auswahlfeld "Zeichenkodierung" diese für das zu speichernde Dokument ändern. Wird beim Öffnen einer bereits vorhandenen Datei der Zeichensatz nicht richtig erkannt und Gedit zeigt bei den Sonderzeichen nur kryptische Zeichen an, kann beim Öffnen-Dialog manuell ein Zeichensatz ausgewählt werden.

Kate

Kate ist der KDE Standardeditor. Möchte man mit ihm ein Dokument konvertieren, so lädt man das Dokument und wählt anschließend "Extras → Kodierung" um den Zeichensatz zu ändern oder "Extras → Zeilenende", um die Art des Zeilenendes zu konvertieren.

Leafpad

Bei Leafpad, dem Standard-Editor der Lubuntu-Desktop-Installation, können Zeichensatz und Zeilenende-Zeichen über den "Datei → Speichern unter"-Dialog festgelegt werden.

Mousepad

Bei Mousepad, dem Standard-Editor der Xubuntu-Desktop-Installation, können Zeichensatz und Zeilenende-Zeichen über den "Datei → Speichern unter"-Dialog festgelegt werden.

Hinweis:

Ab Xubuntu 13.04 (Mousepad 0.3.0) besteht diese Möglichkeit derzeit nicht mehr.

Geany

Unter Geany kann die Kodierung über den Menüpunkt "Dokument → Zeichenkodierung festlegen" geändert werden, die Art des Zeilenendes über "Dokument → Zeilenende anzeigen". Zusätzlich kann ein Dokument über den Menüpunkt "Datei → Neu laden als" mit einem anderen der über sechzig unterstützten Zeichensätze angezeigt werden.

SciTE

SciTE beherrscht nur 8-Bit Zeichenkodierung sowie UCS-2 und UTF-8. Über den Menüpunkt "Datei → Kodierung" wird der Zeichensatzt festgelegt. Die Zeichen für das Zeilenende werden über den Menüpunkt "Optionen → Zeilenende-Zeichen →" ausgewählt und über "Optionen → Zeilenende-Zeichen → festlegen" auf die Datei angewendet.

Vim

Mit VIM kann man ebenfalls den Zeichensatz ändern. Um zwischen Windows/DOS- und Unix-Formatierung zu wechseln benutzt man das Kommando :set ff. Dabei zeigt einem :set ff ? an, was für eine Formatierung momentan benutzt wird und mit :set ff=dos bzw. :set ff=unix kann man sie ändern. Um die Zeichenkodierung zu ändern benutzt man den Befehl :set encoding=WERT. Mögliche Angaben für WERT sind die Zeichenkodierungen die Vim unterstützt. Eine Liste dieser kann man hier 🇬🇧 einsehen.

Konvertierung auf der Kommandozeile

Außer den oben genannten Editoren gibt es unter Ubuntu bzw. Linux zwei gängige und leistungsfähige Konverter für die Kommandozeile: iconv und recode. Beide bieten im Vergleich zu den Möglichkeiten der Editoren in Teilen (deutlich) mehr Optionen und Parameter.

⚓︎

iconv

iconv ist in der Standardinstallation von Ubuntu enthalten. Die allgemeine Syntax von iconv lautet [2]:

iconv [OPTIONEN] DATEI 

wobei der gängigste Aufruf wahrscheinlich dieser ist:

iconv -f Zeichensatz1 -t Zeichensatz2 Ausgangsdatei -o Zieldatei 

iconv kennt dabei die folgenden Optionen:

Optionen von iconv
OptionBeschreibung
-f Name oder --from-code Name Zeichensatz, aus dem konvertiert werden soll
-t Name oder --to-code Name Zeichensatz, in den konvertiert werden soll
-c Weglassen der Zeichen, welche im Zielzeichensatz nicht darstellbar sind
-o Datei Name der Ausgabedatei
-l oder --list zeigt alle Zeichensätze an, die iconv unterstützt, dies sind einige 100 verschiedene
--verbose ausführlichere Ausgabe des Fortschritts beim Konvertieren
-s oder --silent unterdrückt fast alle (Fehler-) Meldungen
-h oder --help zeigt eine kurze Hilfe zu iconv an

iconv ändert zwar die Zeichensatzkodierung, ändert allerdings nicht die Art des Zeilenumbruches.

⚓︎

recode

recode ist die Alternative zu iconv. recode hat im direkten Vergleich weniger Zeichensätze, dafür aber Optionen und ist daher bei manchen Aufgaben flexibler. recode ist nicht in der Standardinstallation enthalten, kann aber über das folgende Paket installiert [1] werden:

  • recode

Befehl zum Installieren der Pakete:

sudo apt-get install recode 

Oder mit apturl installieren, Link: apt://recode

Die allgemeine Syntax von recode lautet:

recode [OPTIONEN] ZEICHENSATZ DATEI 

recode kennt recht viele Möglichkeiten, wie und wann in welchen Zeichensatz kodiert wird. Daher werden hier nur die gängigsten Möglichkeiten vorgestellt.

einige Optionen von recode
OptionBeschreibung
-l alle bekannten Zeichensätze ausgeben
-d es werden nur Akzente und Umlaute umkodiert, sehr praktisch z.B. bei HTML Dokumenten
-f Umkodierung forcieren, auch wenn diese nicht umkehrbar ist
--help zeigt alle Optionen und Möglichkeiten von recode an

Eine ausführliche Einführung in die Möglichkeiten von recocde findet man auch in den Info-Seiten zu recode. Im Folgenden noch drei Beispiele zu recode:

  1. Zeichensatz der Datei "Test.txt" nach UTF-8 konvertieren:

    recode utf-8 Test.txt 
  2. Die Datei dostext mit Kodierung ibmpc in die Datei unixtext mit Kodierung utf-8 konvertieren:

    recode ibmpc..u8 < dostext > unixtext 
  3. Im dritten Beispiel wird die Kodierung nicht geändert (bleibt bei latin1), aber der Windows-Zeilenumbruch CR+LF wird in den unter Linux üblichen Umbruch CR konvertiert:

    recode latin1/cr-lf..latin1 < dostext > unixtext 

⚓︎

convmv

Convmv dient im Gegensatz zu den bisher genannten Programm zur Umwandlung von Dateinamen. Dieses Programm wird über das folgende Paket installiert [1]:

  • convmv (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install convmv 

Oder mit apturl installieren, Link: apt://convmv

Alle Dateinamen im aktuellen Verzeichnis und Unterverzeichnissen von bspw. ISO-8859-15 nach UTF-8 werden mit folgenden Befehlen konvertiert:

  • Zum Testen rekursiven Konvertierens des aktuellen Ordners von ISO-8859-15 nach UTF-8:

    convmv -f iso-8859-15 -t utf-8 -r . 
  • Führt den oben getesteten Konvertierungsvorgang tatsächlich aus:

    convmv -f iso-8859-15 -t utf-8 -r --notest . 

Beim Datenaustausch mit DOS/Windows-Rechnern oder elektronischen Geräten wie Digitalkameras entstehen häufig unerwünschte Großschreibungen von Dateinamen oder Duplikate von Dateien, d.h. die gleiche Datei liegt sowohl mit einem Dateinamen in Groß- als auch in Kleinbuchstaben vor. Mit den Optionen --lower und --replace kann man eine Vereinheitlichung herbeiführen. Convmv ersetzt dabei nur inhaltsgleiche Dateien.

Rekursiv die Namen alle Dateien eines Verzeichnisbaums in Kleinbuchstaben wandeln und Duplikate entfernen, Schreibweise von Verzeichnisnamen beibehalten:

find /Pfad/zum/Dateibaum -type f -print0 | xargs -r -0 convmv --lower --replace --notest  

⚓︎

h2rename

Eine Alternative zu convmv mit grafischer Oberfläche - gerade wenn man den ursprünglichen Zeichensatz nicht kennt, was bei "verhunzten" Dateinamen oft der Fall ist - ist das Programm H2rename. Aufgerufen wird das Programm per H2rename (großes H) und außer einer Verzeichnisauswahl sind keine weiteren Einstellungen nötig.

⚓︎

fromdos / todos

Soll "nur" das Zeilenende von der typischen DOS-/Windows-Endung CR+LF (Wagenrücklauf) in die typische Linux-Endung LF geändert werden, bieten sich die kleinen Tools fromdos und todos an.

Diese werden über das folgende Paket installiert [1]:

  • tofrodos

Befehl zum Installieren der Pakete:

sudo apt-get install tofrodos 

Oder mit apturl installieren, Link: apt://tofrodos

Die allgemeine Syntax lautet:

  • zum Konvertieren des Zeilenendes von Linux → DOS / Windows:

    todos DATEI 
  • zum Konvertieren des Zeilenendes von DOS / Windows → Linux:

    fromdos DATEI 

Beide Tools kennen einige (einfache) Optionen, welche man sich mit Hilfe von todos -h bzw. fromdos -h anzeigen lassen kann.

Achtung!

fromdos und todos eignen sich ausschließlich für 8-bit-Zeichensätze wie ASCII oder Latin, aber nicht für 16-bit-Zeichensätze wie UTF-8!

⚓︎

sed

sed (Unix Stream Editor) kann die Zeilenenden ebenfalls umwandeln. Die hier angegebenen Kommandos gelten für GNU SED und funktionieren dementsprechend unter Ubuntu. Weitere SED-Einzeiler, beispielsweise um unter DOS die Zeilenenden zu beeinflussen, findet man unter Nützliche, einzeilige Scripts für SED 🇩🇪.

DOS-Zeilenenden zu Unix-Zeilenenden

sed -i 's/\x0D$//' DATEI 

Unix-Zeilenenden zu DOS-Zeilenenden

sed -i 's/$/\r/' DATEI 

Konvertierung per Skript

Unter Skripte/Zeichensatzkonvertierung befindet sich ein Bash-Skript, um den richtigen Zeichensatz über ein im Text enthaltenes Wort zu finden, sowie Beispiele zum Konvertieren des Zeichensatzes mit Ruby, Python und Perl.

Diese Revision wurde am 30. Januar 2018 10:55 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Büro, Shell, Übersicht, Dateimanagement