gpt4 book ai didi

java - 使用 XMLStreamReader 转义字符

转载 作者:行者123 更新时间:2023-11-29 03:11:53 24 4
gpt4 key购买 nike

我正在使用 XMLStreamReader 读取 xml 文件。

该文件包含以下形式的转义字符:ü

在我看来,两个转义字符应该代表字符“ü”(UTF-8 编码?)

但 xml 流读取器创建以下字符串:ã¼

我是不是在创建阅读器的过程中做错了什么?

Reader inputReader = Files.newBufferedReader(this.xmlFile.toPath(), StandardCharsets.UTF_8);
XMLInputFactory fact = XMLInputFactory.newInstance();
fact.setProperty("javax.xml.stream.isCoalescing", true);
XMLStreamReader parser = fact.createXMLStreamReader(inputReader);

最佳答案

Did I make something wrong during the creation of the reader?

不,错误是由最初创建该文件的人造成的。字符引用代表一个 Unicode 代码点,因此如果您想将 ü 表示为字符引用,它应该是 üü。这里似乎发生的事情是,创建该文件的人以某种方式混淆了他们的编码,并将 U+00FC 的 UTF-8 编码中的每个字节视为一个单独的字符,并将这些字符中的每一个序列化为字符引用。

如果您无法在源代码中更正文件,那么您将不得不自己事后修复它。如果此文件中的错误编码一直被应用,那么 XMLStreamReader 将为您提供一个包含 char 值的 Java 字符串,这些值都是 <= 255。由于 Unicode 字符 0-255 与 ISO- 8859-1,将此字符串编码为 ISO-8859-1 将为您提供一个包含相同字节值的 byte[],然后您可以将其de编码为 UTF- 8 获取正确的字符串:

String correctString = new String(mangledString.getBytes("ISO-8859-1"), "UTF-8");

关于java - 使用 XMLStreamReader 转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28900060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com