我在Ruby on Rails应用程序中有以下代码行,它检查给定字符串是否包含韩语字符:
isKorean = !/\p{Hangul}/.match(word).nil?
它在控制台中运行良好,但会为实际应用程序引发语法错误:
invalid character property name {Hangul}: /\p{Hangul}/
我错过了什么,我怎样才能让它发挥作用?
答案 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。