Archiv der Kategorie ‘Workshop’

Workshop: Mit Zeichen-Kodierungen hantieren


Um Textdateien zwischen verschiedenen Zeichenkodierungen zu konvertieren, bieten viele Texteditoren entsprechende Funktionen an.

Diese Konvertierung kann man beispielsweise mit dem Tool iconv durchführen. Dazu kann man zuerst eine Liste der dem Tool bekannten Zeichenkodierungen anzeigen lassen:

iconv -l

Zu beachten ist dabei, dass die Bezeichnungen der Zeichenkodierungen je nach Betriebssystem variieren. Wenn man die passenden Kodierungen gefunden hat, gibt man Quell- und Zielkodierung für die Konvertierung an (hier von MACROMAN nach ISO-8859-1):

iconv -f MACROMAN -t ISO-8859-1 source.txt > result.txt

Falls ein Zeichen in der Ziel-Zeichenkodierung nicht vorhanden ist, gibt iconv eine Fehlermeldung wie diese aus:

iconv: illegal input sequence at position 43

Damit das Programm mit Konvertierungsproblemen umzugehen weiß, kann man sich entscheiden, die betroffenen Zeichen entweder zu verwerfen (//IGNORE) oder diese Zeichen anhand einer internen Tabelle in ähnliche (in der Ziel-Zeichenkodierung enthaltene) Zeichen umzuwandeln. Die Optionen werden direkt hinter der Ziel-Kodierung angegeben:

iconv -f MACROMAN -t ISO-8859-1//TRANSLIT source.txt > result.txt

Um das verantwortliche Zeichen genauer zu untersuchen, kann man die Datei mit einem Hex-Editor betrachten und den oktalen Wert des Bytes an dieser Stelle heraus finden:

$ hexdump -cb source.txt
0000000   D   i   e   s       i   s   t       d   i   e       Q   u   e
0000000 104 151 145 163 040 151 163 164 040 144 151 145 040 121 165 145
0000010   l   l   -   D   a   t   e   i       u   n   s   e   r   e   s
0000010 154 154 055 104 141 164 145 151 040 165 156 163 145 162 145 163
0000020       W   o   r   k   s   h   o   p   s 324   !  \n            
0000020 040 127 157 162 153 163 150 157 160 163 324 041 012            
000002d

Anschließend kann man das gefundene Zeichen (hier mit dem Oktalwert 324) mit tr löschen (oder durch ein anderes Zeichen ersetzen):

tr -d '\324'