【问题标题】:render json Encoding::UndefinedConversionError ("\xC3" from ASCII-8BIT to UTF-8)渲染 json Encoding::UndefinedConversionError ("\xC3" 从 ASCII-8BIT 到 UTF-8)
【发布时间】: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


【解决方案1】:

我解决了这个问题,有点...见下文(来自 OP)

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

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

抛出此错误

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

编辑 5:我现在可以使用它。我不喜欢我必须这样做的方式,它正在删除它不知道如何处理的字符,所以不确定我有时会得到什么,但它正在工作。这是我的最终吸气剂

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

【讨论】:

    猜你喜欢
    • 2017-04-20
    • 2014-06-12
    • 2015-08-10
    • 1970-01-01
    • 2015-09-18
    • 2020-07-19
    • 2021-05-19
    • 2014-08-26
    • 2017-10-02
    相关资源
    最近更新 更多