4

"\360\237\230\204" 是标准表情符号 (U+1f604)

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

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

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

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

谢谢!

4

2 回答 2

2

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

你如何处理 ActiveSupport::JSON 和 JSON gem 之间的冲突?

于 2011-10-15T04:34:49.720 回答
0

尝试使用 Oj:

Oj.dump(data, mode: :compat)

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

于 2018-09-13T08:51:49.123 回答