gpt4 book ai didi

java - 转换后的 Word 文档(从 Windows-1252 到 UTF-8)无法正确显示字符

转载 作者:行者123 更新时间:2023-12-01 12:57:11 32 4
gpt4 key购买 nike

我有一个 Windows-1252 Word 文档,我想将其转换为 UTF-8。我需要执行此操作才能将 doc 文件正确转换为 pdf。这就是我目前的做法:

 Path source = Paths.get("source.doc");
Path temp = Paths.get("temp.doc");
try (BufferedReader sourceReader = new BufferedReader(new InputStreamReader(new FileInputStream(source.toFile()), "windows-1252"));
BufferedWriter tempWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(temp.toFile()), "UTF-8"))) {
String line;
while ((line = sourceReader.readLine()) != null) {
tempWriter.write(line);
}
}

但是,当我在 Word 中打开转换后的文件 (temp.doc) 时,它无法正确显示某些字符。例如,Ü 将变为 ⁄。

我该如何解决这个问题?当我创建一个新的 BufferedReader(使用 UTF-8 编码)并读取 temp 时,字符会在 IDE 的控制台中正确显示。

最佳答案

I have a Windows-1252 word document

这不是一个文本文件。 Word 文档基本上是二进制数据 - 用纯文本编辑器打开它,您会看到各种乱码。您可能还会在其中看到一些文本,但基本上它不是纯文本文件,这就是您尝试读取它的方式。

我什至不清楚“Windows-1252 word文档”的含义...Word将在内部使用它想要的任何编码,并且我不确定对此有任何控制。我期望任何像样的“doc to PDF”转换器能够处理任何有效的Word文档。

When I create a new BufferedReader (with UTF-8 encoding) and I read temp, the characters are shown correctly in the console of my IDE.

如果是这样,则表明它是一个纯文本文件,而不是 Word 文档。您需要非常清楚地知道您所拥有的是什么 - Word 文档还是纯文本文件。它们不是同一件事,不应该以同样的方式对待。

关于java - 转换后的 Word 文档(从 Windows-1252 到 UTF-8)无法正确显示字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23779497/

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