渲染json Encoding :: UndefinedConversionError(“ \ xC3”从ASCII-8BIT转换为UTF-8)

时间:2019-06-24 13:12:31

标签: ruby-on-rails ruby ruby-on-rails-4

使用Ruby 2.3.0的Rails 4.1.4应用

不得不意外地将应用程序移动到其他主机。我已经与该错误进行了几天的战斗,并且不确定为什么要在新服务器上启动它。我在这行代码中得到了错误

render json: { :result => cust_setup }, status: 200

cust_setup是从MySQL数据库返回的数据。将编码更改为UTF8并没有帮助。尝试了几种不同的方法来输出相同的结果。不知道该怎么办。

编辑:我在这里搜索时发现的一件事是,由于无法使mysql2 gem正常工作,我们从mysql2迁移到mysql gem。 mysql gem似乎是将内容更改为ASCII-8BIT的罪魁祸首。

编辑2:结合以上内容,此表中有1个字段具有西班牙语。如果删除该错误,该错误将消失。因此,这是西班牙语文本中的特殊字符,同时移至mysql gem。我现在不确定该怎么做。

编辑3:我尝试回到mysql2 gem,使其运行,仍然抛出相同的错误。

编辑4::在模型中为特定字段添加了一个吸气剂。如果我在特定字段中指定编码,则该编码在模型中有效。我现在有这个:

self[:sp_legal].force_encoding("UTF-8").encode("ASCII-8BIT")

会引发此错误

Encoding::InvalidByteSequenceError ("\xF3" followed by "n" on UTF-8):

编辑5:我现在可以使用了。我不喜欢我必须这样做的方式,它正在删除不知道该怎么做的字符,因此不确定我会得到些什么,但它是否有效。这是我最后的吸气剂

self[:sp_legal].force_encoding("UTF-8").encode("ASCII-8BIT", invalid: :replace, undef: :replace)

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,排序...从OP中参见下文

编辑4:在模型中为特定字段添加了一个吸气剂。如果我在特定字段中指定编码,则该编码在模型中有效。我现在有这个:

self [:sp_legal] .force_encoding(“ UTF-8”)。encode(“ ASCII-8BIT”)

会引发此错误

Encoding :: InvalidByteSequenceError(在UTF-8上为“ \ xF3”,后跟“ n”):

编辑5:现在可以使用了。我不喜欢我必须这样做的方式,它正在删除不知道该怎么做的字符,因此不确定我会得到些什么,但它是否有效。这是我最后的吸气剂

self [:sp_legal] .force_encoding(“ UTF-8”)。encode(“ ASCII-8BIT”,无效:: replace,undef :: replace)