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