Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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 为什么即使使用mysql2 gem,ActiveRecord返回的字段编码为ASCII-8BIT?_Ruby On Rails_Ruby On Rails 3_Activerecord_Character Encoding_Ruby 1.9 - Fatal编程技术网

Ruby on rails 为什么即使使用mysql2 gem,ActiveRecord返回的字段编码为ASCII-8BIT?

Ruby on rails 为什么即使使用mysql2 gem,ActiveRecord返回的字段编码为ASCII-8BIT?,ruby-on-rails,ruby-on-rails-3,activerecord,character-encoding,ruby-1.9,Ruby On Rails,Ruby On Rails 3,Activerecord,Character Encoding,Ruby 1.9,我在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了。我尝试

我在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> 
irb>str=Discussion.first.content
=>“编码有问题…”
irb>str编码
=> # 

我已经更改了MySQL中的数据库编码和表编码,还尝试了设置LANG env变量,但没有成功。是否还有其他地方可以查看或了解我为什么会得到错误的编码?

您是否在
config/database.yml
中正确设置了连接编码

development:
  encoding: utf8

啊哈!我的知识浅薄又一次袭来。问题确实出在database.yml中:

development:
  encoding: utf8
  adapter: mysql2
  [...]
我仍然在使用
adapter:mysql
,所以即使安装了
mysql2
gem,它也没有被使用。我没有意识到我必须在
database.yml
中更改它的名称;我以为它会取代旧的
mysql
gem


现在我们都知道了!:)

我没有!但是我把它添加到我的database.yml文件中,它没有改变任何东西。射击谢谢你的提示!这里还有一点信息:\ uuuu ENCODING\uuuu,ENCODING.default\u external和ENCODING.default\u internal全部返回UTF-8注意:这在DataMapper项目中不起作用!我不知道为什么适配器在ActiveRecord(?)中显然被称为mysql2,但在DataMapper项目中,在database.yml中使用
mysql2
只会导致错误,因为DM使用的适配器的名称是
mysql
。DataMapper使用do mysql驱动程序,该驱动程序没有字符编码问题,因此不需要mysql2 gem。无论如何也不会有帮助,因为dm mysql适配器没有使用它。我使用的是mysql 5.1.71,Rails 4.0.2运行在Ruby 2.0.0-p353上。在database.yml中,对于所有环境,编码设置为“utf8”,适配器设置为“mysql2”。我的表都使用UTF-8,“默认字符集=utf8 COLLATE=utf8\U unicode\U ci”。“还有什么办法可以让我看看为什么ActiveRecord会给我ASCII-8BIT字符串?”这里有人问