2014-05-15 67 views
2

我有一個生成Word文檔的PHP腳本(.doc)。跨平臺Word文檔編碼問題

它從HTML實體獲取字符,例如, Π,並用PHP的html_entity_decode()對它們進行解碼。

$line = html_entity_decode($text, ENT_NOQUOTES | ENT_HTML401, "UTF-8"); 

在Linux上的Libre Office中打開生成的文件時,文件加載正確(字符編碼正確)。但是,在Windows上的Microsoft Word中打開時,非ASCII字符不正確。例如,首字母希臘字母PI(Π)呈現爲中文字符()。

我認爲有一個缺失的頭或元數據告訴單詞數據是用UTF-8編碼的。

回答

0

討厭看傻子,但我已經回答了我自己的問題。

剛打開文件進行寫入後,我說:

fwrite($fp, pack("CCC",0xef,0xbb,0xbf)); 

這對UTF-8字節順序標記寫入文件的開始。

http://en.wikipedia.org/wiki/Byte_order_mark