首頁 >後端開發 >PHP問題 >如何解決php word 亂碼問題

如何解決php word 亂碼問題

藏色散人
藏色散人原創
2020-10-22 09:42:572499瀏覽

php word亂碼的解決方法:先開啟「/Writer/Word2007/Base.php」檔案;然後新增「$objWriter->writeAttribute('w:eastAsia', $font)」內容;最後保存修改即可。

如何解決php word 亂碼問題

推薦:《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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn