可能性の重複:
Transliteration in rubyASCII以外のすべての文字をRubyのASCIIに置き換える最も簡単な方法は?
私はこれらのような文字列を変換する簡単な方法を探しています:
- "SPASS" に "SPASS"
- 」 「ueber」〜「ueber」
- など
これは、人の名前から有効なユーザー名を生成するために必要です。
可能性の重複:
Transliteration in rubyASCII以外のすべての文字をRubyのASCIIに置き換える最も簡単な方法は?
私はこれらのような文字列を変換する簡単な方法を探しています:
これは、人の名前から有効なユーザー名を生成するために必要です。
これは音訳と呼ばれます。これの近似値(例を参照)は、Iconvクラスを使用して実行できます。
は、(最初の 'のiconv' を必要とする)次のいずれかを試してみてください。
Iconv.iconv('ascii//ignore//translit', 'utf-8', string).to_s
Iconv.iconv('ascii//translit', 'utf-8', string).to_s
irb(main):013:0> Iconv.iconv('ascii//translit', 'utf-8', 'spaß').to_s
=> "spass"
irb(main):014:0> Iconv.iconv('ascii//translit', 'utf-8', 'crêpes').to_s
=> "crepes"
irb(main):017:0> Iconv.iconv('ascii//translit', 'utf-8', 'über').to_s
=> "uber"
iconv
コマンドラインユーティリティもあります。そのことといくつかのRubyの例に関する詳細( 'ruby'を検索)here
これに代わる方法は、Unidecodeです。これは、当初のPerl実装に触発されていたと思います。私はRubyのインカネーションでそれを使用していませんが、マルチカーネルの拡張を行うべきです(明らかにあなたが望む)。
最後に、Railsを実行している場合、this threadが面白いかもしれません。それは、音訳への代替アプローチのいくつかの違いを詳述し、Railsコア内でこれを行う方法を示します(ActiveSupport::Inflector.transliterate
)
+1いい回答です。私は前に "音訳"という言葉を知らなかったので、ありがとう!興味深いことに、überの変換がOPの望ましい結果と一致しないことを確認する。 OPが間違っているのですか?また、字句解析ライブラリも言語に依存しませんか? – Phrogz
私はそれがあまりにも言語にとらわれないと思います。 Unidecodeディストリビューションには、少なくとも原則的に、より優れたマルチチャールの字体を詳細に記述したかなり大量のデータファイルが付属しています。 –
ドイツ語のみ? _crêpes_のようなもので何をしたいのですか? 'ê'は単語の起源が_crespes_であることを意味します。 _naïveté_または_çava_はどうですか?別の場所によると、_ゲオルグ・フリードリヒ・ヘンデルは、ドイツ人によって「ヘンデル」に、そして英語で「ヘンデル」に簡略化されています(後者はロンドンに移ったときに彼が使用したスペルです)。どちらを選ぶ? – Phrogz
[Rubyでの翻字]の複製(http://stackoverflow.com/questions/1726404/transliteration-in-ruby)と[RubyでのIconvによる字幕](http://stackoverflow.com/questions/4410340/transliteration- with-iconv-in-ruby) – Phrogz