我使用Jackson来解析来自Web服务的JSON响应(使用Spring RestTemplate发出的请求)。 问题是JSON包含unicode字符,如\ u00a0或\ u2212或\ ufeff,这些字符被“解码”为问号或
第一个问题,Web服务在JSON响应中返回此类unicode字符是好还是坏? 响应头Content-Type是否也包含“charset = utf-8”或“application / json”就足够了?
第二个问题,如何让杰克逊能够解码这些角色? 这是一个测试:
String json = "{\"message\":\"Text containing unicode like \\u00a0 or \\u2212 or \\ufeff\"}";
try {
ObjectMapper mapper = new ObjectMapper();
JsonFactory factory = mapper.getFactory();
JsonParser parser = factory.createParser(json);
JsonNode jnode = mapper.readTree(parser);
String message = jnode.get("message").toString();
logger.info(message);
System.out.println(message);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我在控制台和日志中看到的内容:
“包含unicode的文本或?或?”
谢谢!