gpt4 book ai didi

java - 来自以 UTF-8 编码的 Java 解码文件的错误字符

转载 作者:行者123 更新时间:2023-11-29 05:32:45 25 4
gpt4 key购买 nike

在 Windows 7 64 位下,我使用 JAXB 加载一个 XML 文件,编码为 UTF-8 without BOM(我可以通过使用外部软件(如 Notepad++)看到这是真的) .当我打开文件时,我可以看到文本是正确的。但是,解码后我发现有些字符没有正确加载。

例如 SORDITÀ 被加载为 SORDIT�(由 Java 控制台报告)。

在我的 Java 库中,我加载了包含如下文本的类 DataContainer:

File xmlFile = new File("C:/Data.xml"));
JAXBContext jaxbContext = JAXBContext.newInstance(DataContainer.class);
Unmarshaller um = jaxbContext.createUnmarshaller();
return (DataContainer) um.unmarshal(new FileReader(xmlFile));

我是否缺少这样的配置?有什么解决办法吗?

最佳答案

你的问题是你传递了一个 FileReader 并且一个 reader 总是需要一个编码。因为您没有提供它正在使用系统编码。在这种情况下,Windows crap CP1252 和你的双字节字符变成了两个字符,每个字符一个字节。

而是传递 FileInputStream 并让 JAXB 自行确定正确的编码。

关于java - 来自以 UTF-8 编码的 Java 解码文件的错误字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20571544/

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