Jackson JSON处理Unicode符号

时间:2016-06-29 15:15:55

标签: java json unicode jackson utf

我正在调用一个返回文本的web服务,其中包含代表®符号的ascii符号。例如:

ACME Corp® Services

我使用spring直接将此文本数据作为JSON对象返回,当它进入浏览器时,json数据仍然正确:

"service": "ACME Corp® Services"

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

ACME Corp® Services

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

1 个答案:

答案 0 :(得分:3)

您不需要清理内容,但必须确保它使用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);

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