Ruby on rails Ruby正则表达式错误:编码正则表达式匹配不兼容(带UTF-8字符串的ASCII-8BIT正则表达式)
我得到了两个错误,都是围绕编码的,都是相关的 我在启动WEBrick时遇到的第一个错误(技术上是警告):Ruby on rails Ruby正则表达式错误:编码正则表达式匹配不兼容(带UTF-8字符串的ASCII-8BIT正则表达式),ruby-on-rails,ruby,unicode,encoding,character-encoding,Ruby On Rails,Ruby,Unicode,Encoding,Character Encoding,我得到了两个错误,都是围绕编码的,都是相关的 我在启动WEBrick时遇到的第一个错误(技术上是警告): /Users/USERNAME/example/config/initializers/bb-ruby.rb:54: warning: invalid Unicode Property \P: /\:\-?\P/ 它所指的行是:/\:\-?\p/, 它只是一点正则表达式,最终是这个模块的一部分: @@tags['Razzing'] = [ /\:\-?\P/, '<img s
/Users/USERNAME/example/config/initializers/bb-ruby.rb:54: warning: invalid Unicode Property \P: /\:\-?\P/
它所指的行是:/\:\-?\p/,
它只是一点正则表达式,最终是这个模块的一部分:
@@tags['Razzing'] = [
/\:\-?\P/,
'<img src="/assets/emoticons/razzing.png">',
'Razzing',
':P',
:razzing]
我正在运行Ruby 1.9.2和Rails 3.2.1。您的正则表达式正在“编译”为ASCII-8BIT
只需在声明正则表达式的文件顶部添加编码声明:
# encoding: utf-8
你完成了。现在,当Ruby解析代码时,它将假定您使用的每个文本(Regex、String等)都是在UTF-8编码中指定的
更新:UTF-8
现在是Ruby 2.0及更高版本的默认编码。
这停止了
编码::CompatibilityError
错误,但我在启动Webrick时仍收到无效Unicode属性
警告。Ruby 1.9上的正则表达式引擎已更改…我不知道您最初所说的\P
是什么意思,但现在它用于匹配Unicode代码点,并且需要一个参数(如\P{L}
,以匹配任何非字母字符)。请参阅:我正在尝试匹配以下内容::-P
或:P
(如伸出舌头的表情符号)…我现在该怎么做呢?请在语法之前省略反斜杠实际上,表达式上不需要任何反斜杠。记住,它只用于转义对正则表达式有意义的字符,例如:(
,[
,{
(及其结尾对应项),^
,$
和\
本身。
# encoding: utf-8
/Pattern/u - stand for UTF-8