php word亂碼的解決方法:先開啟「/Writer/Word2007/Base.php」檔案;然後新增「$objWriter->writeAttribute('w:eastAsia', $font)」內容;最後保存修改即可。
推薦:《PHP影片教學》
PHPword解決中文亂碼
一、增加東亞字體支援
開啟並編輯路徑/Writer/Word2007/Base.php檔案內容,大概在第349行(行數隨著版本可能會有變化)大概函數_writeTextStyle內加:
$objWriter->writeAttribute(‘w:eastAsia’, $font)
例如我的修改片段基本上是下面這樣:
Font if($font != ‘Arial’) { $objWriter->startElement(‘w:rFonts’); $objWriter->writeAttribute(‘w:eastAsia’, $font);// 添加这行 $objWriter->writeAttribute(‘w:ascii’, $font); $objWriter->writeAttribute(‘w:hAnsi’, $font); $objWriter->writeAttribute(‘w:cs’, $font); $objWriter->endElement(); }
二、 解決中文亂碼問題(此解法對於GBK編碼有用,不適用於UTF-8)
編輯PHPWord/Template.php
找到程式碼$replace = utf8_encode($replace);,刪除或註解掉這行程式碼,加上$replace = iconv( 'gbk','utf-8 ′, $replace);,例如程式碼改為如下:
if(!is_array($replace)) { //$replace = utf8_encode($replace); $replace =iconv(‘gbk’, ‘utf-8′, $replace); // 注释掉上面行后添加这行 }
呼叫方式如下:
$document->setValue(‘Template’, iconv(‘utf-8′, ‘GB2312//IGNORE’, ‘中文’));
上面的程式碼主要解決模板的問題,
下面同樣的道理,解決Section新增文字的問題,
在PHPWord/Section.php找到程式碼$givenText = utf8_encode($text);,
刪除或註解掉這行程式碼,新增$givenText = iconv('gbk', 'utf-8′, $text);,如程式碼如下:
public function addText($text, $styleFont = null, $styleParagraph = null) { //$givenText = utf8_encode($text); $givenText = iconv(‘gbk’, ‘utf-8′, $text); // 注释掉上面行后添加这行 }
以上是如何解決php word 亂碼問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!