我只是试图加载UTF-8 json文件并将其返回。它在mac上正常工作,但是当我将它部署到CentOS时,它失败了。JSON.load抛出Encoding :: CompatibilityError
我该如何解决?
加载UTF-8文件。
[[email protected] vfs]$ file data/E03124/data.json
data/E03124/data.json: UTF-8 Unicode text, with very long lines, with no line terminators
错误消息
Caught Encoding::CompatibilityError at '"{\"資産の部\":{': incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)
回溯
json (1.8.1) lib/json/pure/parser.rb:242:in `rescue in parse_string'
json (1.8.1) lib/json/pure/parser.rb:213:in `parse_string'
json (1.8.1) lib/json/pure/parser.rb:257:in `parse_value'
json (1.8.1) lib/json/pure/parser.rb:121:in `parse'
json (1.8.1) lib/json/common.rb:155:in `parse'
json (1.8.1) lib/json/common.rb:334:in `load'
app/controllers/statements_controller.rb:13:in `block in getData'
app/controllers/statements_controller.rb:12:in `open'
app/controllers/statements_controller.rb:12:in `getData'
Rails代码
def getData
json_data = open("data/#{params[:code]}/data.json") do |io|
JSON.load(io)
end
render :json => json_data
end
红宝石版本是2.0.0。
Rails版本是4.1.4。
也许是因为该文件的字符串被转义了。 –
如何以二进制模式打开JSON文件? –