保存ActiveRecord记录时出现奇怪的编码错误

时间:2012-10-01 12:36:14

标签: ruby-on-rails-3 activerecord encoding

我有以下情况:我的webservice正在接收JSON数据并创建模型(典型的REST场景)。有时我会得到一个

Encoding::CompatibilityError Exception: incompatible character encodings: ASCII-8BIT and UTF-8
保存记录时出现

错误消息,这些记录只能(或)绑定到两个属性。启动调试器,将这两个属性中的任何一个设置为空字符串并保存工作,如下所示:

model = Model.new(params[:model])
model.save! # Fails with above error message

model = Model.new(params[:model])
model.attribute1 = ""
model.save! # Works

model = Model.new(params[:model])
model.attribute2 = ""
model.save! # Works too!

现在从http请求中解析了params,它们如何相互依赖?

任何具有相同情况的人?

修改 我们已经找到了兼容性错误的原因:https://github.com/jruby/activerecord-jdbc-adapter/issues/229看起来,JDBC适配器在utf-8编码方面存在一些错误,这在传统的红宝石中已经修复了很长时间。

1 个答案:

答案 0 :(得分:0)

正如我在原始问题的编辑中添加的那样,问题是JRuby的JDBC适配器中的一个错误(我忘了将其添加为约束,我的错!):https://github.com/jruby/activerecord-jdbc-adapter/issues/229