gpt4 book ai didi

java - 字符串不包含实体,但显示它,并且表示在替换时不会改变

转载 作者:行者123 更新时间:2023-12-01 12:05:45 24 4
gpt4 key购买 nike

所以我认为下图很好地展示了我的问题:

enter image description here

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

EDIT1:客户端是一个 Android 应用程序,麻烦的字符串是上述 JSON 响应的属性之一。如果我不碰它,手机就会显示这个奇怪的字符“€TM”。如果我使用 Windows-1252 对其进行解码,它会正确打印字符,但它会破坏字符串的其他部分。

编辑2:我有@Produces(text/json)。这些是报告的 header (请注意,我使用 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 打印到控制台收到的字符串实际上打印正确。我不知道发生了什么。

最佳答案

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

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

关于java - 字符串不包含实体,但显示它,并且表示在替换时不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27627288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com