テキストエンコーディングをあるタイプから別のタイプに変換できるMac OS Xコマンドラインアプリケーションはありますか?(特にMac OS Romanをutf8に変換するため)


16

Mac OS X 10.8のコマンドラインユーティリティを呼び出して、標準のWestern Mac OS Romanエンコーディングで保存されたテキストファイルをより一般的なUTF-8に変換できるようにします。

作成したAppleScriptからユーティリティを呼び出します。非常に大きなテキストブロックで作業する場合、AppleScriptは非常に遅くなります。そのため、OS Xコマンドラインを使用してテキストの解析と変換を行いたいと思います。テキスト解析を実行できる「sed」というツールを見つけました。ただし、ファイルにはutf-8として開かれた場合にゴミとして表示される文字(スマート引用符や省略記号など)をクリーンアップする必要のある要素がまだ多くあります。

テキストエンコーディング変換を強制すると、ファイル内のすべての非utf8文字を削除するのに役立つと考えています。ただし、「sed」がどのようにテキストエンコーディングを簡単に変換できるかはわかりません。

組み込みのAppleScriptルーチンを使用して、MacRomanとしてtemp txtファイルをディスクに既に保存しています。

テキストエンコードを変換できる組み込みのコマンドラインツールについてのアイデアはありますか?私のスクリプトの他のユーザーは、ビルトインではない場合、適切なツールセットを必ずしも持っていないので、パフォーマンスとビルトインのためのコマンドライン。

ご協力いただきありがとうございます!


コマンドはiconvです。
-bmargulies

@bmargulies:MacRomanでエンコードされたファイルでiconvを試してUTF-8に変換しようとすると、元の「異常な文字」の代わりに文字化けが発生します。たとえば、省略記号は「Äö√Ѭ∂‚Äö√Ѭ∂」に変換されます。省略記号が6つの期間に正常に変換されることを期待します。スマートクオートも同じで、奇妙なテキストに変換され、「Äö√Ñ√≤」に変わります。私が使用する構文は次のとおりです。cat source.txt | iconv -f MacRoman -t UTF-8> iconv_test.txtすべてのテキストを適切な置換に適切に変換するようにiconvに指示する特定のCLI構文はありますか?

また、どのような引数を渡しますか?
bmargulies

@ Darkstar--同じ手順でうまくいきました。あなたのソースはMacRomanにあったと確信していますか?
トムゲウェック

1
Excelは、この問題を持つべきではない、あなたは、例えば見、あなたが好きに輸入のためのエンコーディングを設定することができるはずsuperuser.com/questions/280603/...
トムGewecke

回答:


8

非ASCII文字をASCIIバリアントに変換する別の方法は、次を使用することiconv -t ASCII//TRANSLITです。

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

ASCII//IGNOREASCII以外の文字を削除しますが、たとえばを使用して削除することもできますtr -dc '\0-\177'


iconvに許可証をTRANSLITERATE:ä→A」?
ダン

@danielAzuelos知らない。ただし、文字の置換方法は実装によって異なります。たとえば、Debianに付属するiconv äはjustに置き換えられますa
Lri

28

iconv ここで間違いなく選択するツールです:

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

実行iconv --listして、サポートされているすべてのエンコーディングのリストを表示します。


MacRomanではなく、「iso-8859-1」であることがわかったら、もう一度試しました。それはまだ私が望んでいたことをしませんでした。iconvは、私がやりたいことをできるとは思いません。すべての派手な拡張文字を標準のピリオドとアポストロフィと二重引用符で優雅に置き換えてください。
ダークスター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.