2012-03-18 2 views
8

У меня есть следующие строки кода в моем Руби на приложение Rails, который проверяет, содержит ли данная строка символов корейского или нет: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, если хотите. Обратите внимание, что в Ruby 2.0 UTF-8 теперь по умолчанию, поэтому это не нужно в Ruby 2.0+.

Это известно как «волшебный комментарий». Вы можете и должны прочитать больше о encoding in Ruby 1.9. Обратите внимание, что кодирование в представлениях Rails автоматически обрабатывается config.encoding (набор для UTF-8 по умолчанию в config/application.rb.

Вполне вероятно, работает в консоли, потому что ваш терминал настроен на использование UTF-8 уже.

+1

Отлично, спасибо. Установив кодировку по умолчанию UTF-8 в 'application.rb', я ожидал он работает во всем приложении. Оказывается, я ошибался. – Arnold

+2

@ Арнольд Сахнов. Этот параметр применяется только к представлениям (предположительно потому, что Rails может устанавливать кодировку, когда она отображает представление, но Ruby - это один файл классов загрузки и т. д.), , –