首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字符串不包含实体,但显示它,替换后表示不会更改

字符串不包含实体,但显示它,替换后表示不会更改
EN

Stack Overflow用户
提问于 2014-12-23 20:07:27
回答 2查看 182关注 0票数 0

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

我希望原始字符串按原样打印,因为当我在响应(使用JAX)中发送它时,它实际上显示了\u2018,而不是它应该使用的左引号。但是,应用EncodingUtils.clean(.)方法(它只是Apache StringEscapeUtils.unescapeJava(.)的包装器)发送到响应的字符串不会更改响应(它仍然显示\u2018)。由于测试已经改变,我在这里缺少了什么,我需要做些什么来得到预期的替换?

EDIT1:客户机是一个Android应用程序,而麻烦的字符串是上述JSON响应的属性之一。如果我不碰它的话,手机上就会显示出一个奇怪的角色‘character’。如果我使用Windows-1252对其进行解码,它就会正确地打印字符,但它会拧下字符串的其他部分。

EDIT2:我有@Produces(文本/json)。这些是报告的标题(请注意,我使用OkHttp处理请求):

代码语言:javascript
复制
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打印控制台接收到的字符串实际上是正确的。我不知道发生了什么事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-23 22:48:01

因此,经过几个小时的愚蠢伸展,我发现现在发生的事情基本上是这样的(见2013年4月15日的评论,2014年12月23日的解决方案):https://code.google.com/p/android/issues/detail?id=3552

有时谷歌,有时..。

票数 0
EN

Stack Overflow用户

发布于 2014-12-23 20:28:21

我没有看到任何奇怪的行为。

Java已经取消了以字符串形式出现的转义代码,因此您的testObj包含Unicode字符0x2018和0x2019,而不是文字字符串"\u2018“和"\u2019”。因此,StringEscapeUtils.unescapeJava(...)返回相同的字符串。这意味着testObj.contentEqual(postTreatmentTestObj)为真,因此assertFalse(...)测试失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27627288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档