2013-02-21 28 views
0

我使用http://www.codeproject.com/Articles/91894/HTML-as-a-Source-for-a-DOCX-File將HTML轉換爲docx。Docx with ooxml的特殊字符

大多數字符被正確讀取,但某些特殊字符(如•,「」)正在顯示爲「」。我該怎麼做才能糾正這個問題?

我傳遞給HTMLtoDocx的HTML也沒有正確讀取特殊字符。相反,它顯示爲'?'。將編碼更改爲Encoding.Default後,它將返回正確的字符。 在HTMLtoDOCX中有兩個地方可以設置編碼(下面的幾行)。在我嘗試將編碼格式從Encoding.UTF8改爲編碼的兩個地方。但這並沒有幫助。

StreamWriter streamStartPart = new StreamWriter(docpartDocumentXML.GetStream(FileMode.Create, FileAccess.Write), Encoding.Default); 
byte[] Origem = Encoding.Default.GetBytes(html); 
+0

是HTML頁面UTF-8編碼?那麼你應該使用Encoding.UTF8.GetBytes(...) – 2013-02-21 08:56:31

+0

我面臨與Encoding.UTF8.GetBytes – San 2013-02-21 13:41:46

+1

相同的問題你有沒有試過,然後改變StreamWriter的構造與ENCODING.utf8? – 2013-02-21 14:01:20

回答

0

•表示UTF-8的序列不正確地解釋爲ANSI(= Encoding.Default)。

您應該檢查是否使用正確的編碼讀取HTML文件。

雖然編碼信息在HTTP標題或HTML META標記中可用,但如果從文件讀取HTML,則此編碼可能不正確。

由於.Net將字符串字符視爲2字節Unicode值,確保正確的編碼適用於讀取和寫入字節流是解決問題的第一步。

+0

元標記中的編碼設置爲UTF-8()。我正在閱讀當前頁面的html並處理它。在調試模式下,我已驗證字符是否正確顯示,直到它被HTMLtoDOCX修飾。在HTMLTODOCX我已經改回字節[] Origem = Encoding.UTF8.GetBytes(html); – San 2013-02-21 13:37:45