簡體   English   中英

轉換后的 word 文檔(從 Windows-1252 到 UTF-8)不能正確顯示字符

[英]Converted word document (from Windows-1252 to UTF-8) not displaying characters correctly

我有一個 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 的控制台中正確顯示。

我有Windows-1252 Word文檔

那不是文本文件。 Word文檔基本上是二進制數據-使用純文本編輯器打開它,您將看到各種亂碼。 您可能還會在其中看到一些文本,但是基本上它不是純文本文件,這是您嘗試閱讀的方式。

我什至還不清楚“ Windows-1252 word文檔”的含義是什么... Word將在內部使用它想要的任何編碼,但我不確定對此是否有任何控制。 希望任何像樣的“ doc to PDF”轉換器都能處理任何有效的Word文檔。

當我創建一個新的BufferedReader(使用UTF-8編碼)並讀取temp時,這些字符會在IDE的控制台中正確顯示。

如果是這種情況,則表明它一個純文本文件開頭,而不是Word文檔。 你需要在你自己的頭腦清楚你有什么-一個Word文檔或純文本文件。 它們不是一回事,不應以相同的方式對待。

為了強制Excel使用UTF-8編碼,我使用了字節順序標記(在任何其他內容之前):

tempWriter.write('\uFEFF'); // byte order mark to let Excel know to expect UTF-8

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM