RoR字符类正则表达式

时间:2012-03-18 04:19:22

标签: ruby-on-rails ruby regex cjk

我在Ruby on Rails应用程序中有以下代码行,它检查给定字符串是否包含韩语字符:

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

它在控制台中运行良好,但会为实际应用程序引发语法错误:

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

我错过了什么,我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:13)

这是一个字符编码问题,您需要添加:

# encoding: utf-8

到你正在使用该正则表达式的Ruby文件的顶部。如果你愿意,你可以使用你正在使用的字符类而不是UTF-8的任何编码。请注意,在Ruby 2.0中,UTF-8现在是默认值,因此Ruby 2.0 +中不需要这样做。

这被称为“魔术评论”。您可以而且应该阅读有关encoding in Ruby 1.9的更多信息。请注意,Rails视图中的编码由config.encoding自动处理(默认情况下设置为config/application.rb中的UTF-8。

它可能在控制台中工作,因为您的终端已设置为使用UTF-8。