使用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)
答案 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)