我在Ruby 1.9,Rails 3.0,ActiveRecord 3.0中遇到了这个错误:
incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)
这种情况正在发生,因为我试图调用的字符串gsub
(直接来自ActiveRecord对象字段)的编码为ASCII-8BIT
。我已经阅读了几篇文章,帖子和答案,说这是由mysql gem编码错误造成的,并建议使用mysql2。
但我已经在使用mysql2了。我已经尝试了0.2.x版本和最新的0.3.7版本,但都没有解决问题:
irb> str = Discussion.first.content
=> "Something's wrong with encodings..."
irb> str.encoding
=> #<Encoding:ASCII-8BIT>
我在MySQL中更改了数据库编码和表格编码,我也尝试过设置LANG env变量而没有运气。有没有其他我可以看到或看到为什么我得到这个错误的编码?
答案 0 :(得分:8)
啊哈!我的知识浅薄再次袭来。问题确实存在于database.yml:
中development:
encoding: utf8
adapter: mysql2
[...]
我还在使用adapter: mysql
,所以即使安装了mysql2
gem,也不会使用。我没有意识到我必须在database.yml
中更改它的名称;我以为它会替换旧的mysql
宝石。
现在我们都知道了! :)
答案 1 :(得分:1)
您是否在config/database.yml
?
development:
encoding: utf8