Rails4,MySql,mysql2编码问题

时间:2015-05-13 15:27:18

标签: mysql ruby-on-rails

我有一个使用Rails 4,MySql 5.1,gem mysql2的项目。

这个堆栈一直运行到今天。我在表中添加了两个字段(添加了相应的迁移),如果我将数据保存到表中,此字段中的数据看起来很难看,如 - %D0%9D%D0%BE%D0%B4%D0 %B0%D1%80%D0%B8

这是Rails日志:

这是来自请求的数据。一切看起来都不错,' name'并且评论'是俄文。

Parameters: {"{\"user_id\":\"1\",\"name\":\"АБВ\",\"email\":\"mike@outofcloud.ru\",\"answer\":\"5\",\"comment\":\"цувцув\"}"=>nil}

但是在SQL语句中,' name'参数已更改:

SQL (23.3ms) INSERT INTO "feedbacks" ("answer", "code", "comment", "created_at", "email", "name", "updated_at", "user_id") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" [["answer", 5], ["code", 1], ["comment", "цувцув"], ["created_at", "2015-05-13 08:54:22.047321"], ["email", "example@example.ru"], ["name", **"%D0%90%D0%91%D0%92"**], ["updated_at", "2015-05-13 08:54:22.047321"], ["user_id", "1"]]

'评价'在我的迁移之前添加了字段,它按预期工作。它在数据库和应用程序中看起来很棒。 '名称'最近添加了字段,它没有按预期工作。

有人可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您展示的字符串是在URI.encode上使用"АБВ"的结果 - 请参阅:

[4] pry(main)> URI.encode "АБВ"
=> "%D0%90%D0%91%D0%92"

Rails本身并不这样做。你必须在其他地方(或者,希望不是,一个宝石)有一些代码正在进行转换。

如果您不知道它在哪里,请从您的控制器添加显示任何before_action方法或其他转换的代码。如果您正在执行任何操作before_save或任何自定义属性设置器,也可以使用模型中的代码。 def name=