2012-03-18 6 views
8

私は与えられた文字列は、韓国語の文字が含まれているかどうかチェックするのRailsアプリ、上の私のRubyのコードの次の行を持っている:それはコンソールで完璧に動作しますが、A提起RoRの文字クラス正規表現

isKorean = !/\p{Hangul}/.match(word).nil? 

を実際のアプリの構文エラーです。

invalid character property name {Hangul}: /\p{Hangul}/ 

何が紛失していますか?どのように動作させることができますか?

+0

は何ですかコンソールとアプリケーションで ''#{RUBY_VERSION} -p#{RUBY_PATCHLEVEL} "'の結果が返ってくるのですか? –

答えて

13

これは、文字エンコーディングの問題です、あなたが追加する必要があります。

# encoding: utf-8 

ルビーのトップにあなたがその正規表現を使用しているファイルおそらく「文字クラスあなたの任意のエンコーディングを使用することができます。あなたが望むなら、UTF-8の代わりにuseを使用してください。 Ruby 2.0では、UTF-8がデフォルトになっているので、これはRuby 2.0以降では必要ありません。

これは「魔法のコメント」として知られています。 encoding in Ruby 1.9についてもっと読むことができます。 Railsのビューでそのエンコーディングが(config/application.rbにデフォルトでUTF-8に設定config.encodingによって自動的に処理されることに注意してください。

あなたの端末がすでにUTF-8を使用するように設定されているので、それはおそらくコンソールで働いていた。

+1

パーフェクト、ありがとう、 'application.rb'でデフォルトのエンコーディングをUTF-8に設定しました。 – Arnold

+2

@ArnoldSakhnovその設定はビューにのみ適用されます(おそらく、Railsはビューをレンダリングするときにエンコーディングを設定できますが、Rubyはクラスファイルをロードするものですなど) 。 –