【问题标题】:JSON::GeneratorError arising with the use of to_json methodJSON::GeneratorError 使用 to_json 方法引起的
【发布时间】:2016-12-28 19:06:58
【问题描述】:

我收到了

JSON::GeneratorError: 源序列是非法/格式错误的 utf-8

当我使用to_json 方法时。我没有在任何地方重写 to_json 方法。

我已经推荐了this questionthis one

但是由于 Ruby 1.8 没有字符串编码的概念,所以解决方案对我没有帮助。

如何在不转义特定非 ascii 字符的情况下解决此问题?

我正在使用 ruby​​ 1.8.7

【问题讨论】:

  • 你能不能也提供一个简单的测试用例来澄清你到底在说什么?

标签: json ruby


【解决方案1】:

我知道的唯一 Rails 解决方案是:

# [AM] Monkeypatch to support multibyte utf-8
module ::ActiveSupport::JSON::Encoding
  def self.escape(string)
    if string.respond_to?(:force_encoding)
      string = string.encode(
        ::Encoding::UTF_8,
        :undef => :replace
      ).force_encoding(::Encoding::BINARY)
    end
    json = string.gsub(escape_regex) { |s| ESCAPED_CHARS[s] }
    json = %("#{json}")
    json.force_encoding(::Encoding::UTF_8) if json.respond_to?(:force_encoding)
    json
  end
end

我相信同样的补丁可以直接应用于JSON::GeneratorError

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2015-01-05
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多