从Java String中消除字符e280a8

mat*_*ruz 2 java oracle byte json character-encoding

我的应用程序采用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("
", "");似乎不起作用.

有什么建议?

Joo*_*gen 5

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

desc = desc.replace("\u2028", "");
Run Code Online (Sandbox Code Playgroud)