使用to_json方法生成的JSON :: GeneratorError

时间:2016-08-22 09:35:09

标签: json ruby

我正在接受

  

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

当我使用to_json方法时。我没有在任何地方覆盖to_json方法。

我已提及this question以及this one

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

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

我正在使用ruby 1.8.7

1 个答案:

答案 0 :(得分:0)

我所知道的唯一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