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

Ich möchte ein Befehlszeilenprogramm in Mac OS X 10.8 aufrufen, das mir die Möglichkeit gibt, eine Textdatei, die in der standardmäßigen Western Mac OS Roman-Codierung gespeichert ist, in das allgemeinere UTF-8 zu konvertieren.

Ich werde das Dienstprogramm von einem AppleScript aus aufrufen, das ich erstellt habe. AppleScript ist extrem langsam, wenn mit sehr großen Textblöcken gearbeitet wird. Daher möchte ich meine Textanalyse und -konvertierung über die 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 der Datei, die bereinigt werden müssen, Zeichen, die als Müll erscheinen, wenn die Datei als utf-8 geöffnet wird (z. B. Anführungszeichen und Ellipsen).

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

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

Anforderungen:

  • Befehlszeile für Leistung
  • Bevorzugen Sie native Tools, da andere Benutzer meines Skripts nicht unbedingt über das richtige Toolset verfügen, wenn es nicht integriert ist. (Obwohl ich meinem Skript ein Häkchen hinzufügen und abbrechen könnte, wenn ein benötigtes Tool nicht vorhanden ist)

Hat jemand von Ihnen eine Idee für ein integriertes Befehlszeilentool, das die Textcodierung konvertieren kann, oder für ein vorhandenes Paket, das für diese Aufgabe überlegen ist?

@bmargulies: Eigentlich versuche ich wirklich, ausgefallene Zeichen wie Ellipsen und intelligente Anführungszeichen automatisch in "echte", "reine" ASCII-Anführungszeichen, Apostrophe und Punkte umzuwandeln. Kann iconv das? Oder muss ich die Dateien manuell konvertieren?
@TomGewecke: Eigentlich war die Quelle nicht MacRoman, sondern "iso-8859-1". Die Verwendung von iconv hat jedoch die ausgefallenen Anführungszeichen und Auslassungspunkte nicht elegant (und automatisch) durch Standard-ASCII-Anführungszeichen und -Punkte ersetzt.
Gibt es einen Grund, warum Sie ASCII anstelle des ursprünglich angeforderten UTF-8 haben müssen? Es gibt natürlich kein ASCII-Äquivalent für viele Zeichen in MacRoman oder ISO Latin 1, also glaube ich nicht, dass Sie mit diesem netten Dienstprogramm machen können, was Sie wollen. Suchen/Ersetzen ist wahrscheinlich erforderlich.
@TomGewecke: Der Grund, warum ich versuche, die Dinge zu vereinfachen, ist, dass die CSV-Dateien, die mein AppleScript erstellt, in Excel aufgrund des Vorhandenseins dieser Nicht-ASCII-Zeichen hässlich aussehen. Microsoft Excel (sowohl Windows als auch auf dem Mac) ist das einzige Programm, das Probleme beim Importieren der CSV-Dateien hat, die in iso-8859-1 codiert sind.
Excel sollte dieses Problem nicht haben, Sie sollten in der Lage sein, die Codierung für Importe beliebig einzustellen, siehe z. B. superuser.com/questions/280603/…
→ Darkstar: für ICU, site.icu-project.org .

Antworten (2)

Eine andere Möglichkeit, Nicht-ASCII-Zeichen in ASCII-Varianten zu konvertieren, ist die Verwendung von iconv -t ASCII//TRANSLIT:

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

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

Erlaubt iconvdie Transliteration: ä → a" ?
@danielAzuelos Ich weiß es nicht. Die Art und Weise, wie Zeichen ersetzt werden, hängt jedoch von der Implementierung ab: Zum Beispiel ersetzt das mit Debian gelieferte iconv änur durch a.

iconvist hier definitiv das Tool der Wahl:

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

Ausführen iconv --list, um eine Liste aller unterstützten Kodierungen anzuzeigen.

Als ich herausfand, dass es nicht MacRoman war, sondern "iso-8859-1", versuchte ich es erneut. Es hat immer noch nicht das gemacht, was ich wollte. Ich glaube nicht, dass iconv das tun kann, was ich möchte: alle ausgefallenen erweiterten Zeichen elegant durch Standardpunkte und Apostrophe und doppelte Anführungszeichen ersetzen.