2012-03-18 31 views
8

Ben verilen dize Korece karakterler ya da değil içerip içermediğini denetler Raylar app, benim Ruby kod satırında aşağıdaki:RoR karakter sınıfı regex

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

Bu konsolda mükemmel çalışıyor, ancak bir yükseltir gerçek uygulama için sözdizimi hatası:

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

Neyi eksik ve nasıl çalıştırabilirim?

+0

nedir konsolda ve uygulamada "# {RUBY_VERSION} -p # {RUBY_PATCHLEVEL}" 'sonucu? –

cevap

13

Bu karakter kodlama konudur, eklemek gerekir:.

# encoding: utf-8 

Ruby üstüne sen bu regex kullanarak konum dosyasını Muhtemelen herhangi bir kodlama kullanabileceğiniz karakter sınıfı sen' Eğer kullanıyorsanız, UTF-8 yerine yeniden kullanabilirsiniz. Ruby 2.0'da, UTF-8'in varsayılan değer olduğunu unutmayın, bu nedenle Ruby 2.0 + 'da buna gerek yoktur.

Bu "sihirli yorum" olarak bilinir. encoding in Ruby 1.9 hakkında daha fazla bilgi edinebilirsiniz. Raylar görünümlerinde bu kodlama config/application.rb varsayılan olarak UTF-8-config.encoding (dizi otomatik olarak işlenir unutmayın.

Terminal UTF-8 zaten kullanacak şekilde ayarlanmıştır çünkü büyük olasılıkla konsolda çalışıyordu

.

+1

Mükemmel, teşekkürler. Varsayılan kodlamayı UTF-8 uygulamasına" application.rb "olarak ayarlayarak, bekliyordum. Bu uygulama boyunca çalışmaya başlıyor, yanıyordu, yanılıyordu – Arnold

+2

@ArnoldSakhnov Bu ayarların yalnızca görünümler için geçerli olduğu (muhtemelen Rails görüntüyü oluştururken Rails kodlamayı ayarlayabildiğinden, ancak Ruby bir yükleme sınıfı dosyaları, vb.) . –