因此,我认为下面的图片很好地显示了我的问题:

我希望原始字符串按原样打印,因为当我在响应(使用JAX)中发送它时,它实际上显示了\u2018,而不是它应该使用的左引号。但是,应用EncodingUtils.clean(.)方法(它只是Apache StringEscapeUtils.unescapeJava(.)的包装器)发送到响应的字符串不会更改响应(它仍然显示\u2018)。由于测试已经改变,我在这里缺少了什么,我需要做些什么来得到预期的替换?
EDIT1:客户机是一个Android应用程序,而麻烦的字符串是上述JSON响应的属性之一。如果我不碰它的话,手机上就会显示出一个奇怪的角色‘character’。如果我使用Windows-1252对其进行解码,它就会正确地打印字符,但它会拧下字符串的其他部分。
EDIT2:我有@Produces(文本/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打印控制台接收到的字符串实际上是正确的。我不知道发生了什么事。
发布于 2014-12-23 22:48:01
因此,经过几个小时的愚蠢伸展,我发现现在发生的事情基本上是这样的(见2013年4月15日的评论,2014年12月23日的解决方案):https://code.google.com/p/android/issues/detail?id=3552
有时谷歌,有时..。
发布于 2014-12-23 20:28:21
我没有看到任何奇怪的行为。
Java已经取消了以字符串形式出现的转义代码,因此您的testObj包含Unicode字符0x2018和0x2019,而不是文字字符串"\u2018“和"\u2019”。因此,StringEscapeUtils.unescapeJava(...)返回相同的字符串。这意味着testObj.contentEqual(postTreatmentTestObj)为真,因此assertFalse(...)测试失败。
https://stackoverflow.com/questions/27627288
复制相似问题