【发布时间】:2019-06-24 13:12:31
【问题描述】:
带有 Ruby 2.3.0 的 Rails 4.1.4 应用
不得不意外地将应用程序移动到其他主机。几天来我一直在与这个错误作斗争,不知道为什么它会在新服务器上启动。我在这行代码中得到错误
render json: { :result => cust_setup }, status: 200
cust_setup 是从 MySQL 数据库返回的数据。将编码更改为 UTF8 没有帮助。尝试了一些不同的方法来输出相同的结果。不知道该怎么办。
编辑: 我在这里搜索时发现的一件事是我们从 mysql2 转移到 mysql gem,因为我们无法让 mysql2 gem 工作。 mysql gem 似乎是将事物更改为 ASCII-8BIT 的罪魁祸首。
编辑 2: 再加上上述,此表中有 1 个字段包含西班牙语。如果我删除它,错误就会消失。所以,它是西班牙语文本中的特殊字符,加上移动到 mysql gem。目前我不确定我需要做什么来解决这个问题。
编辑 3: 我尝试返回 mysql2 gem,让它运行,仍然抛出同样的错误。
编辑 4: 在模型中为特定字段添加了一个 getter。如果我在特定字段上指定编码,则编码在模型中有效。我现在有这个:
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)
【问题讨论】:
-
可能重复 stackoverflow.com/questions/23309669/… 在 cust_setup 数据中,您可能会得到一些特殊字符
-
我已经读过了。在我的记录集上尝试 .force_encoding('ISO-8859-1') 时,我得到未定义的方法。
标签: ruby-on-rails ruby ruby-on-rails-4