2009-08-24 21 views
5

残念ながら、Unicode 0.1(sudo gem install unicode)はRuby 1.9では動作しません。私は次のスニペットを持っています:Ruby 1.9でUnicode gemを置き換える方法は?

アクセント付きの文字を削除せずにタイトルをパーマリンクに変換するのに使用します。

packまたはunpackメソッドを使用してそのようなテキストを変換する方法はありますか?

+0

あなたはruby-talkアーカイブを掘り下げてください。ここ数日、数週間でUnicode gemの作者が新しいバージョンを発表したことを確信しています。また、Ruby 1.9についてもそのスレッドで議論されていると確信しています。私は実際にスレッドを読んでいなかったので、詳細はありません。 –

+0

実際、それはUnicodeの宝石ではなく、以下の@molfで述べたUnicode-Utilsの宝石でした。 (それはまた、過去数日ではなかった、それは3ヶ月前でした) –

答えて

13

更新:より良いオプションは、これらの欠けている機能のために特別に作成された宝石unicode_utilsを使用することがあります

require "unicode_utils" 
UnicodeUtils.nfkd("áéíóúç").gsub(/[^\x00-\x7F]/,'').to_s 
#=> "aeiouc" 

あなたは、Railsのactivesupportのに依存することができます可能性がありますか?そして、次の操作を実行できます。

require "activesupport" 
mb_str = ActiveSupport::Multibyte::Chars.new("áéíóúç") 
mb_str.normalize(:kd).gsub(/[^\x00-\x7F]/,'').to_s 
#=> "aeiouc" 

ActiveSupport::Multibyteは、Ruby 1.8にUTF-8/Unicodeサポートをもたらすために書かれたが、あまりにも1.9で正常に動作しました。外部依存関係にしたくない場合は、the codeの一部を借りることができます。

+0

素敵な交換!私はRailsプラグインでUnicode gemを使用しているので、確かに私はそれに頼ることができます!どうもありがとう!しかし、Ruby 1.9だけを使用して置き換えるのはいいですね。それを使用する宝石がたくさんあり、ActiveSupportがそれらのすべての選択肢ではないかもしれないからです。 –

+0

これは私が上記の私のコメントで考えていたものです。それについて私に思い出させてくれてありがとう!私は実際には今、私のおもちゃプロジェクトでこれを必要としています。 –

+0

私は、宝石のユニコードを交換するときに、ActiveSupportの代わりにunicode-utils gemを使用する方が良いと思います!ありがとう! ;) –

1

また、レールにI18n.transliterate('string')メソッドがあります。魅力のように動作します。

+0

このメソッドの参照が見つかりません。ドキュメントへのリンクを提供できますか?ありがとう! – dgilperez

+0

'http:// apidock.com/rails/ActiveSupport/Inflector/transliterate' –

+0

私の答えは更新されました。'#to_latin'のようなものは削除されました。 –

関連する問題