PHPWord 非國人開發,對中文支援較弱。本文針對兩種常見使用情境提供修正方法,親測有效。
編輯 phpword/Template.php,找到:
$replace = utf8_encode($replace);
修改為:
$replace = iconv('GBK', 'UTF-8', $replace);
前提:PHP 檔案本身儲存為 GBK 編碼。
編輯 phpword/Section.php,找到:
$givenText = utf8_encode($text);
修改為:
$givenText = iconv('GBK', 'UTF-8', $text);
原理相同:PHPWord 內部預設用 utf8_encode(僅適用 ISO-8859-1 轉 UTF-8),若來源為 GBK/BIG5 需改用 iconv 或 mb_convert_encoding。
iconv 的 from_encoding 參數一致。$replace = $replace;(視版本而定)。patches 自動套用修正。