Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby正则表达式错误:编码正则表达式匹配不兼容(带UTF-8字符串的ASCII-8BIT正则表达式)_Ruby On Rails_Ruby_Unicode_Encoding_Character Encoding - Fatal编程技术网

Ruby on rails Ruby正则表达式错误:编码正则表达式匹配不兼容(带UTF-8字符串的ASCII-8BIT正则表达式)

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

我得到了两个错误,都是围绕编码的,都是相关的

我在启动WEBrick时遇到的第一个错误(技术上是警告):

/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