我使用Rails 4.1.2,以及gem 'activesupport-json_encoder', github: 'rails/activesupport-json_encoder'
和gem 'algoliasearch-rails'
。问题是当我在具有阿拉伯字符的ActiveRecord对象上调用.to_json
时,它会用�
替换任何阿拉伯字符。
> p = Product.find 100
#<Product id: 93038, name: "Men Jacket , front zipper, double colour light gre...", brand: "\xD8\xA7\xD8\xAE\xD8\xB1\xD9\x8A">
> puts p.to_json
{"id":93038,"name":"Men Jacket , front zipper, double colour light grey sizeXL","brand":"��������"}
答案 0 :(得分:0)
您可以按以下方式覆盖产品型号中的as_json
方法:
def as_json(options)
hash = self.serializable_hash.delete('brand')
super(hash.merge({brand: ActiveSupport::JSON.encode(self.brand)})
end
然后使用以下内容:
p = Product.find 100
puts p.as_json
答案 1 :(得分:0)
我通过强迫&#34; utf-8&#34;来修复它。编码,在https://github.com/rails/activesupport-json_encoder/blob/master/lib/active_support/json/encoding/active_support_encoder.rb#L127中。我在这里分发了宝石https://github.com/mahmoud-abdelaziz/activesupport-json_encoder。
添加gem 'activesupport-json_encoder', github: 'mahmoud-abdelaziz/activesupport-json_encoder'
,问题就解决了。