从Java String中消除字符e280a8

时间:2014-07-31 14:44:26

标签: java json oracle character-encoding byte

我的应用程序采用Java字符串并将其置于JSON响应中,它适用于IE但由于某些原因在Chrome和Firefox上我没有看到页面上的数据,我没有得到任何控制台错误而我确保响应对象能够在Firebug和Chrome调试工具上进行检查。

我正在使用Java 6,并且有问题的String是从Oracle DB的CLOB列创建的:

  

下午4:42<

这是上面String的十六进制代码,就像在Oracle上一样:

  

34,3a,34,32,20,50,4d,e2,80,a8,3c

如您所见,在“M”(4d)和“<”之间(3c)我们有值e2,80,a8,根据UTF-8是行分隔符(e280a8),我通过仅添加子串直到“M”来测试我的应用程序,它适用于所有浏览器,但是当我再加上一个角色时,它会破碎。所以可以肯定地说这个角色引起了这个问题。

Java控制台将字符串输出为:

  

下午4:42 - <

其字节值为:

  

52,58,52,50,32,80,77,-30,-128,-88,60

由于我知道在“M”和“<”之间不应该有换行符或其他任何内容,我认为解决方案是擦除该字符,但desc = desc.replaceAll("
", "");似乎没有工作

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

字节为UTF-8,它是Unicode行分隔符"\u2028"。你是对的。

desc = desc.replace("\u2028", "");