Gibt es eine Mac OS X-Befehlszeilenanwendung, die Textkodierungen von einem Typ in einen anderen konvertieren kann? (Speziell zum Konvertieren von Mac OS Roman nach utf8)

16

Ich möchte ein Befehlszeilen-Dienstprogramm in Mac OS X 10.8 aufrufen, mit dem ich eine Textdatei, die in der Standard-Codierung von Western Mac OS Roman gespeichert wurde, in das allgemeinere UTF-8 konvertieren kann.

Ich werde das Dienstprogramm von einem AppleScript aufrufen, das ich erstellt habe. AppleScript ist extrem langsam, wenn Sie mit sehr großen Textblöcken arbeiten. Aus diesem Grund möchte ich das Parsen und Konvertieren von Text mithilfe der OS X-Befehlszeile durchführen. Ich habe ein Tool namens "sed" gefunden, mit dem ich die Textanalyse durchführen kann. Es gibt jedoch noch viele Elemente in der Datei, die bereinigt werden müssen. Zeichen, die beim Öffnen der Datei als utf-8 angezeigt werden (z. B. intelligente Anführungszeichen und Ellipsen).

Ich denke, dass das Erzwingen einer Textcodierungskonvertierung dazu beitragen kann, alle Nicht-UTF8-Zeichen in der Datei zu entfernen. Ich kann jedoch nicht sehen, wie "sed" die Textcodierung leicht konvertieren kann.

Ich habe die temporäre txt-Datei bereits als MacRoman mit den integrierten AppleScript-Routinen auf der Festplatte gespeichert.

Hat jemand von euch eine Idee für ein eingebautes Befehlszeilentool, das die Textkodierung konvertieren kann? Befehlszeile für Leistung und integrierte Funktionen, da andere Benutzer meines Skripts nicht unbedingt das richtige Toolset haben, wenn es nicht integriert ist.

Danke für Ihre Hilfe!

Dunkler Stern
quelle
Der Befehl lautet iconv.
bmargulies
@bmargulies: Wenn ich iconv für eine in MacRoman codierte Datei versuche und versuche, sie in UTF-8 zu konvertieren, erhalte ich Müllzeichen anstelle der ursprünglichen "ungewöhnlichen Zeichen". Beispielsweise wird die Ellipse in "" umgewandelt. Ich würde erwarten, dass sich die Ellipse elegant in sechs Perioden umwandelt. Intelligente Anführungszeichen sind die gleichen, sie wandeln sich auch in seltsamen Text um und werden zu "Äö√Ñ√≤". Die von mir verwendete Syntax lautet: cat source.txt | iconv -f MacRoman -t UTF-8> iconv_test.txt Gibt es eine bestimmte CLI-Syntax, die iconv anweist, den gesamten Text ordnungsgemäß in entsprechende Ersetzungen zu konvertieren?
Und welche Argumente übergeben Sie?
bmargulies
@ Darkstar - bei mir hat das auch geklappt. Bist du sicher, dass deine Quelle in MacRoman war?
Tom Gewecke
1
Excel sollte dieses Problem nicht haben, sollten Sie in der Lage sein , die Codierung für Importe auf , was Sie wollen, siehe zB superuser.com/questions/280603/...
Tom Gewecke

Antworten:

8

Eine andere Möglichkeit, Nicht-ASCII-Zeichen in ASCII-Varianten zu konvertieren, besteht darin, Folgendes zu verwenden iconv -t ASCII//TRANSLIT:

$ echo ‘’“”–—…äé | iconv -t ASCII//TRANSLIT
''""--..."a'e

ASCII//IGNOREwürde Nicht-ASCII-Zeichen entfernen, aber Sie können dies zum Beispiel auch mit tun tr -dc '\0-\177'.

Lri
quelle
Erlaubt iconvdas Transliterieren von: ä → a "?
dan
@ DanielAzuelos Ich weiß es nicht. Die Art und Weise, wie Zeichen ersetzt werden, hängt jedoch von der Implementierung ab: Zum Beispiel wird das mit Debian gelieferte Iconv ädurch just ersetzt a.
Lri
28

iconv ist definitiv das Werkzeug der Wahl hier:

iconv -f MACROMAN -t UTF-8 your-roman-encoded-file.txt > utf-8-encoded-file.txt

Führen Sie iconv --listden Befehl aus , um eine Liste aller unterstützten Codierungen anzuzeigen.

nohillside
quelle
Als ich herausfand, dass es sich nicht um MacRoman, sondern um "iso-8859-1" handelte, versuchte ich es erneut. Es hat immer noch nicht getan, was ich wollte. Ich glaube nicht, dass iconv das kann, was ich möchte: Ersetzen Sie alle ausgefallenen erweiterten Zeichen elegant durch Standardperioden, Apostrophe und doppelte Anführungszeichen.
Darkstar