4

私はOS X 10.5.5を使用しています(ただし、それほど問題ではないと思います)

二重引用符、省略記号 ("...") などの派手な文字を 1 文字に含む一連のテキスト ファイルがあります。

これらのファイルを、できれば文字の意味を失うことなく、古き良きプレーンな 7 ビット ASCII に変換する必要があります (つまり、これらの省略記号を 3 つのピリオドに変換し、逆引用符を通常の "s などに変換します)。

それを行うには、スマートなコマンドライン (bash) ツール/スクリプトをアドバイスしてください。

4

5 に答える 5

2

Elinks Web ブラウザは、Unicode エンティティを対応する ASCII エンティティに変換し、「—」を「--」、「…」を「...」などに変換します。同じ変換を使用する python モジュールpython-elinksがあります。次のように、それをシェル フィルターに変換するのは簡単です。

#!/usr/bin/env python
import elinks
import sys
for line in sys.stdin:
    line = line.decode('utf-8')
    sys.stdout.write(line.encode('ASCII', 'elinks'))
于 2008-10-17T16:56:03.030 に答える
1

私の知る限り、iconvはそれを行う必要があります。省略記号の例のように、1つの入力文字が複数の出力文字になる必要がある/なる可能性がある変換を処理する方法について100%確実ではありません...試してみてください!

更新:試してみましたが、機能しないようです。おそらく、「小さい」エンコーディングで省略記号(私が使用したテスト文字)を表現する方法がわからないために失敗します。UTF-8からUTF-16への変換はうまくいきました。:/それでも、iconvはさらに調査する価値があるかもしれません。

于 2008-10-17T16:30:42.410 に答える
1

文字変換ツールをご覧ください。私は(Perlの) Unidecodeが好きで、他の言語に移植するのはそれほど難しくありません。

于 2008-10-17T16:48:08.600 に答える
1

私はiconvを使用して、WindowsのTextPadによって作成されたUTF-16LE(試行錯誤でわかったリトルエンディアン)からOSXのASCIIに次のようにファイルを変換しました。

 cat utf16file.txt |iconv -f UTF-16LE -t ASCII > asciifile.txt

hexdumpをパイプ処理して文字を表示し、正しい出力が得られていることを確認できます。ターミナルはUTF-16の解釈方法を認識しており、正しく表示されるため、ファイルに対して「cat」を実行するだけではわかりません。 :

cat utf16file.txt | iconv -f UTF-16LE -t ASCII | hexdump -C 

これは、右側に16進文字コードとASCII文字を使用したレイアウトを示しています。また、-f "from"パラメーターでさまざまなエンコードを試して、何を処理しているかを把握できます。

'iconv -l'を使用して、iconvがシステムで使用できる文字セットを一覧表示します。

于 2008-12-10T02:49:10.843 に答える
0

昨日か一昨日、ファイル名の変更について質問があり、rename.plそのタスクに使用できる Perl スクリプトを示しました。問題の領域は、奇数文字がどのようにエンコードされるかを知り、音訳の正しい順序を考案することです。私はおそらく、すべてのマッピングを順番に行うスクリプトを適応させてそれを行うでしょう。一度に 1 文字ずつ行うのは、非常に手間がかかります。

質問は:プレフィックス/サフィックスで名前を変更する方法

于 2008-10-17T16:59:06.177 に答える