字符unicode值

时间:2011-11-24 14:44:50

标签: java utf-8

我有一个用UTF-8编码的XML文件。当我用Java打开它时,一些(理论上有效的)字符仍然被编码。例如,我尝试获取&#66352字符:

String str = new String(line.getBytes("UTF-8")); System.out.println(str.charAt(pos));

其中pos是它应该的位置。 我得到的是&字符。

当我用Notepad ++打开它并确保它编码UTF-8时,我遇到了同样的问题。

在我看来,应该有两种方法:从头开始只使用代码(无字符)或用字符替换所有代码。

我该怎么做以及如何做?

2 个答案:

答案 0 :(得分:4)

您需要一个合适的XML解析器。您可以为该任务使用一些反序列化框架(如XStreamJAXB),或使用Java提供的DOM解析类:org.w3c.dom

以下是使用org.w3c.dom包的一些示例:How to read XML file in Java

我的个人偏好是XStream库,但这可能取决于XML文件的复杂性。

答案 1 :(得分:1)

  1. 请不要在没有指定字符集的情况下从字节数组构造字符串,这总是一个问题的迹象。

  2. 如果charAt返回&符号,那么您要么不使用xml解析器来加载文件,要么字符是双重编码的,如&66352;

  3. 字符66352不适合Java的16位字符数据类型,因此被编码为String中的两个代理字符。在这种情况下,您应该使用codePointAt方法。