Странное поведение регулярного выражения ruby ​​в рельсах with utf8 char

У меня проблема с одним из моих регулярных выражений проверки при использовании нестандартного символа utf-8. Итак, я провёл несколько экспериментов и выяснил, что регулярное выражение ruby ​​ведет себя по-разному, когда оно используется в среде rails или в обычном рубине.

Я публикую здесь свой эксперимент с китайской строкой.

In ruby ​​"pure":

string = "運動會"
puts string[/\A[\w]*\z/]
=> match "運動會" - ok

] В рельсах:

# coding: utf-8
task :test => :environment do
  string = "運動會"
  puts string[/\A[\w]*\z/]
end
$ rake test
=> nothing - not ok

Если я опущу # coding: utf-8 , он поставляется с недопустимым многобайтовым символом (US-ASCII) . В любом случае, даже с этим он не совпадает.

Конечно, я проверил все (ruby_version, кодировка файлов скриптов в utf-8 ..)

Я использую:

  • Rails 3.0.7
  • Ruby 1.9.2 (ruby-1.9.2-p180)

Итак, я пришел к выводу, что rails изменяют поведение регулярного выражения, и я не нашел способа заставить его вести себя как в обычном ruby.

9
задан Hartator 23 May 2011 в 09:51
поделиться