我有以下情况:我的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编码方面存在一些错误,这在传统的红宝石中已经修复了很长时间。
答案 0 :(得分:0)
正如我在原始问题的编辑中添加的那样,问题是JRuby的JDBC适配器中的一个错误(我忘了将其添加为约束,我的错!):https://github.com/jruby/activerecord-jdbc-adapter/issues/229