Ruby 1.9.3 を使用して、アクセント付きの UTF-8 文字を同等の ASCII 文字に置き換えたいと考えています。例えば、
Acsády --> Acsady
これを行う従来の方法は、Ruby の標準ライブラリの一部である IConv パッケージを使用することです。次のようなことができます。
str = 'Acsády'
IConv.iconv('ascii//TRANSLIT', 'utf8', str)
どちらが得られますか
Acsa'dy
次に、アポストロフィを削除する必要があります。この方法は Ruby 1.9.3 でも機能しますが、次のような警告が表示されIConv is deprecated and that String#encode should be used instead
ます。ただし、String#encode
まったく同じ機能を提供するわけではありません。未定義の文字はデフォルトで例外をスローしますが、:undef=>:replace (未定義の文字をデフォルトの '?' 文字に置き換えます) を設定するか、未定義のソースエンコーディング文字をマップするハッシュに :fallback オプションを設定することで処理できます。ターゲットエンコーディング。考えられるすべてのアクセント記号を処理するために独自のハッシュを作成する必要がないように、標準ライブラリまたはいくつかの宝石で利用可能な標準の :fallback ハッシュがあるかどうか疑問に思っています。
@raina77ow: 返信ありがとうございます。それがまさに私が探していたものです。ただし、リンク先のスレッドを見た後、データベースが文字セットの照合を使用する方法で、アクセントのない文字をアクセントのある同等の文字に単純に一致させることがより良い解決策であることに気付きました。Rubyには照合に相当するものはありますか?