我有文本字符串(Java String),其中应包含'gerald.o'leary'
。
除此之外,它还包含一个控制角色'c2'。我已经包含了十六进制转储,请参阅image1.png
以获取十六进制转储。
当我将它保存到数据库并通过在客户端中运行SQL并将其粘贴到十六进制编辑器中将其读回来时,我看到c2被3f替换,请参阅image2.png
。
我本可以忍受它,但是当使用String.equals()在Java中比较这两个字符串时,返回false。
有人可以解释一下这里发生了什么吗?!
答案 0 :(得分:0)
我不知道你是如何得到十六进制转储的,但是java字符串是unicode字符串,因此字符和字节之间没有1:1的对应关系。我怀疑你的字符串包含unicode字符,这些字符不能用单个字节表示,你的字符处理(假设是这种情况)是错误的。
答案 1 :(得分:-1)
您是否检查过您的SQL DB是否可以存储UTF-8 / Unicode字符(即它不是ISO-8859-1,ASCII或类似字符)?