13

我正在尝试连接到这个 mysql 数据库。DataMapper 可以很好地以 UTF-8 格式获取所有内容,但 Sequel 总是以 ASCII-8bit 格式返回字符串,这会在 .to_json 中产生错误。

我已经尝试了几件事以使其正常工作。

Encoding.default_external = Encoding::UTF_8  
Encoding.default_internal = Encoding::UTF_8  
DB.run 'set names utf8'  
Sequel.mysql 'db', (...), :encoding => 'utf-8'  

我有宝石:mysql(2.9.0)(试过),mysql2(0.3.11)和sequel(3.42.0)

唯一可行的方法是手动强制对每个字符串进行编码,这远不如理想。

4

2 回答 2

21

尝试Sequel.mysql2代替Sequel.mysql. Sequel.mysql使用旧mysql驱动程序而不是新mysql2驱动程序,我不相信mysql驱动程序支持编码。

于 2012-12-30T02:22:19.203 回答
1

编码可以像 do 一样传递:

Sequel.connect("mysql2://user:pass@localhost/the_database?encoding=utf8")
于 2015-03-03T16:33:13.987 回答