处理4字节Unicode表情符号时ruby JSON lib中的错误?

时间:2011-10-15 03:42:16

标签: ruby json unicode emoji

<\ n> \“\ 360 \ 237 \ 230 \ 204”是标准的表情符号图标(U + 1f604)

当我尝试在说出JSON的服务器端点中发送此字符时,响应会被破坏。原因如下:

>> JSON({:a => "\360\237\230\204"}.to_json)
=> {"a"=>"\357\230\204"}

如您所见,字符串的第一部分已被JSON库修改。

这是一个已知错误,是否有解决方法?或者这是设计的某种方式,因为以十六进制返回的值是f604而不是1f604?

谢谢!

2 个答案:

答案 0 :(得分:2)

ActiveRecord与标准JSON to_json方法之间存在冲突。 ActiveRecord to_json实现有一个错误。我使用此线程中指定的初始化程序解决了它:

How do you deal with the conflict between ActiveSupport::JSON and the JSON gem?

答案 1 :(得分:0)

尝试使用Oj:

Oj.dump(data, mode: :compat)

您将必须oj将其添加到宝石列表中