Jackson JSON Unicode 符号的处理

Jackson JSON Handling of Unicode symbols

我正在调用一个网络服务,其中 return 的文本包括代表 ® 符号的 ascii 符号。例如:

ACME Corp® Services

我使用 spring 到 return 这个文本数据直接作为 JSON 对象,当它进入浏览器时 json 数据仍然正确:

"service": "ACME Corp® Services"

但是在通过 Handlebars 模板呈现并写入页面后,我得到:

ACME Corp® Services

我是否需要在使用前清理 JSON 数据?如果是这样,这样做的最佳做法是什么?否则,也许我应该在后端进行更改,但我不确定那会是什么。

您不需要清理内容,但您必须确保它使用 JSON 规范允许的有效编码:通常是 UTF-8(替代方案是 UTF-16 和 UTF-32)。

如果内容未编码为 UTF-8 而是其他格式(如 ISO-8859-1 又名 "Latin-1"),您将需要构造 Reader 以正确解码它:

Reader r = new InputStreamReader(in, StandardCharset.ISO_8859_1);
MyPOJO pojo = mapper.readValue(r, MyPOJO.class);

您似乎遇到的问题是使用的编码不正确。