【发布时间】:2012-10-02 19:45:43
【问题描述】:
我有应该包含'gerald.o'leary' 的文本字符串(Java 字符串)。
实际上,除了其他字符“c2”之外,它还包含一个控制字符。我已经包含了十六进制转储,请参阅image1.png 以获得十六进制转储。
当我将它保存到数据库并通过在客户端运行 SQL 并将其复制粘贴到十六进制编辑器中读取它时,我看到 c2 被 3f 替换,请参阅image2.png。
我本可以接受它,但事实上当这两个字符串在 Java 中使用 String.equals() 进行比较时,返回 false。
有人可以解释一下这里发生了什么吗?!
【问题讨论】:
-
其实
c2 92正在被3f取代。将两个字节减少为一个很明显,这是某个地方的编码问题。 -
您遇到了字符编码问题。我猜原始文本包含一个智能引用。该文本是如何进入您的 Java 字符串的?是在网页的表格中输入的吗?
-
我正在通过 JAXB 读取一个包含 HR 数据的 XML 文件,相关字段是电子邮件地址。
标签: java string control-characters