0

我有一个要转换为 UTF-8 的 Windows-1252 word 文档。我需要这样做才能将 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 控制台中正确显示。

4

1 回答 1

2

我有一个 Windows-1252 word 文档

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

我什至不清楚“Windows-1252 word 文档”是什么意思...... Word 将在内部使用它想要的任何编码,我不确定是否可以对此进行控制。我希望任何体面的“文档到 PDF”转换器能够处理任何有效的 Word 文档。

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

如果是这种情况,则表明它一个纯文本文件,而不是 Word 文档。您需要非常清楚自己拥有什么——Word 文档或纯文本文件。它们不是一回事,不应该以同样的方式对待。

于 2014-05-21T09:46:49.487 回答