我有一个生成Word文档的PHP脚本(.doc
)。
它需要来自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 :(得分:0)
讨厌傻瓜,但我已经回答了我自己的问题。
在打开文件写作之后,我补充道:
fwrite($fp, pack("CCC",0xef,0xbb,0xbf));
这会将UTF-8字节顺序标记写入文件的开头。