mysql2 gem,Rails 3.0.3和“不兼容的字符编码”错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql2 gem,Rails 3.0.3和“不兼容的字符编码”错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1663字,纯文字阅读大概需要3分钟。
内容图文
![mysql2 gem,Rails 3.0.3和“不兼容的字符编码”错误](/upload/InfoBanner/zyjiaocheng/880/40a1b58a24a248efbb868fe96d496cc1.jpg)
我正在使用Rails 3.0.3,并且我已将mysql适配器从ruby-mysql更改为mysql2,但现在出现以下错误:
incompatible character encodings: ASCII-8BIT and UTF-8
我到处都读过关于此的内容,但是我无法解决.
application.rb:
config.encoding = "utf-8"
database.yml:
development:
adapter: mysql2
encoding: utf8
database: rails3_development
username: root
password:
host: localhost
宝石:
specs:
abstract (1.0.0)
actionmailer (3.0.3)
actionpack (3.0.3)
activemodel (3.0.3)
activerecord (3.0.3)
activeresource (3.0.3)
activesupport (3.0.3)
arel (2.0.7)
bcrypt-ruby (2.1.4)
builder (2.1.2)
erubis (2.6.6)
i18n (0.5.0)
jquery-rails (0.2.6)
mail (2.2.15)
mime-types (1.16)
**mysql2 (0.2.6)
orm_adapter (0.0.4)
paperclip (2.3.8)
polyglot (0.3.1)
rack (1.2.1)
rack-mount (0.6.13)
rack-test (0.5.7)
rails (3.0.3)
railties (3.0.3)
rake (0.8.7)
thor (0.14.6)
treetop (1.4.9)
tzinfo (0.3.24)
warden (1.0.3)
will_paginate (3.0.pre2)
解决方法:
我有一个类似的问题:排序规则为utf8_bin的varchar字段具有ASCII-8BIT编码.
至少在我的情况下,问题出在mysql2 gem上,而不是在Rails中,也不在mysql设置中,因为ruby-mysql gem不会发生.
当您切换到ruby-mysql时,请测试问题是否消失.
在Ruby 1.9.2上从irb运行的以下代码演示了该问题:
require 'mysql2'
c = Mysql2::Client.new(host: "localhost", username: "root", database: 'd')
c.query("select word from t where word = 'a'").to_a[0]["word"].encoding
# => #<Encoding:ASCII-8BIT>
这在mysql数据库上,其中所有可能的设置都已设置为utf8_bin排序规则.
在mysql2 gem中,第253行的result.c文件中包含以下代码段:
if (fields[i].flags & BINARY_FLAG) {
rb_enc_associate(val, binaryEncoding);
} else ...
我相信这是设置二进制(ASCII-8BIT)编码的地方,可能是因为utf8_bin排序规则…我已经删除了它,并且它解决了问题,但是我确定它可能会引入其他问题,例如斑点.
内容总结
以上是互联网集市为您收集整理的mysql2 gem,Rails 3.0.3和“不兼容的字符编码”错误全部内容,希望文章能够帮你解决mysql2 gem,Rails 3.0.3和“不兼容的字符编码”错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。