
複数の言語のテキストを含むUTF-8形式のファイルがあります。多くの人の名前があります。これをASCIIに変換し、結果ができるだけ適切に見えるようにする必要があります。
より広いエンコーディングをより狭いエンコーディングに変換する方法はいくつかあります。最も簡単な変換は、ASCII以外のすべての文字を「_」などの一部のプレースホルダに置き換えることです。ファイルの言語を知っていれば、ローマ字表記などの他の可能性があります。
UTF-8からASCIIへの適切な(最善の努力)変換を提供できるUnixツールまたはプログラミング言語ライブラリはUnixで利用可能ですか?
ほとんどのテキストはヨーロッパのラテン語です。
答え1
これは次のような場合に便利です。
iconv -f utf-8 -t ascii//TRANSLIT
echo ĥéĺłœ π | iconv -f utf-8 -t ascii//TRANSLIT
返品helloe ?
。変換方法を知らない文字はiconv
疑問符で置き換えられます。
iconv
POSIXですが、すべてのシステムにこのオプションがあるかどうかはわかりませんTRANSLIT
。それはLinuxで私に効果的です。また、このIGNORE
オプションは、ターゲット文字セットで表現できない文字を自動的に削除します(参考資料を参照man iconv_open
)。
さらに悪いことは、POSIX互換オプションを使用することですtr
。このコマンドは、ASCII以外のすべてのコードポイントを疑問符で置き換えます。 UTF-8テキストを一度に1バイトずつ読みます。 「E」は、アクセント結合または事前構成文字を使用して符号化されるかどうかに応じてE?
置き換えることができる。?
echo café äëïöü | tr -d '\200-\277' | tr '\300-\377' '[?*]'
例では、caf? ?????
事前設定された文字を使用して返します。
答え2
konwert utf8-ascii
変換表に基づいて最良の変換を実行します。入力言語に関するおおよそのアイデアがある場合は、言語固有のフィルタを使用してより良い結果を提供できます。
konwert utf8-xmetodo
エスペラントを x-metodo 表現に変換します。
konwert UTF8-tex
言語固有のパラメーターを使用して、発音区別記号のTeX表現を作成しようとします。
konwert UTF8-ascii/de
「ä」は単に「a」の代わりに「ae」(ドイツの慣習)と呼ばれます。
konwert UTF8-ascii/rosyjski
ロシア語を翻訳するには、「英語に似た」規則などではなく、ポーランド語の規則が使用されます。
答え3
努力するuni2ascii -B input.txt >output.txt
答え4
複数の言語の[人名]を含むUTF-8形式のファイルがあります。 [意味のあるASCII形式に変換したいです。]
次の名前を関連する人が反対しないいくつかのASCII文字列に変換できるようにしたいですか?
- 私たちは次のようになります。
- オーバード広告広告広告広告
これを行うことができる自動化されたツールがあると思われます。人の名前にはラテン語がない場合もあれば、ラテン語がたくさん含まれている場合もあります。ソフトウェアは文化的に許容されるバージョンを選択することはできません。少なくともソフトウェアが関係する人々の文化を理解していなければ、そうではありません。
また、見ることができますhttps://stackoverflow.com/a/1398403/477035