所以我认为下图很好地说明了我的问题:
我希望原始字符串按原样打印,因为当我在响应中发送它(使用 JAX-RS)时,它实际上显示了 \u2018,而不是它应该显示的左引号。但是,将 EncodingUtils.clean(...) 方法(它只是 Apache Commons Lang StringEscapeUtils.unescapeJava(...) 的包装)应用于发送到响应的字符串不会改变响应(它仍然显示 \ u2018)。由于从测试开始它们已经改变,我在这里缺少什么,我需要做什么才能获得预期的替代品?
EDIT1:客户端是一个Android应用程序,麻烦的字符串是上述JSON响应的属性之一。如果我不碰它,手机就会显示这个奇怪的字符“€TM”。如果我使用 Windows-1252 对其进行解码,它会正确打印字符,但会拧紧字符串的其他部分。
EDIT2:我有@Produces(text/json)。这些是报告的标头(请注意,我使用 OkHttp 进行请求处理):
Date: Tue, 23 Dec 2014 21:05:49 GMT
Connection: close
Server: Jetty(7.5.3.v20111011)
Via: 1.1 vegur
OkHttp-Selected-Protocol: http/1.1
OkHttp-Sent-Millis: 1419368765324
OkHttp-Received-Millis: 1419368765736
此外,从 Android 将接收到的字符串打印到控制台实际上可以正确打印它。我不知道发生了什么。