writeAttribute('w:eastAsia', $font)"; finally save the changes."/> writeAttribute('w:eastAsia', $font)"; finally save the changes.">

Home  >  Article  >  Backend Development  >  How to solve php word garbled problem

How to solve php word garbled problem

藏色散人
藏色散人Original
2020-10-22 09:42:572406browse

php The solution to garbled word: first open the "/Writer/Word2007/Base.php" file; then add the content of "$objWriter->writeAttribute('w:eastAsia', $font)"; finally Just save the changes.

How to solve php word garbled problem

Recommended: "PHP Video Tutorial"

PHPword solves Chinese garbled characters

1. Add support for East Asian fonts

Open and edit the content of the path/Writer/Word2007/Base.php file, probably at line 349 (the number of lines may change with the version), probably the function _writeTextStyle Add:

$objWriter->writeAttribute(‘w:eastAsia’, $font)

For example, my modified fragment is basically as follows:

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();
}

2. Solve the problem of Chinese garbled characters (this solution is useful for GBK encoding, not applicable to UTF-8)

Edit PHPWord/Template.php

Find the code $replace = utf8_encode($replace);, delete or comment out this line of code, and add $replace = iconv( 'gbk','utf-8 ′, $replace);, for example, the code is changed to the following:

if(!is_array($replace)) {
//$replace = utf8_encode($replace);     
 $replace =iconv(‘gbk’, ‘utf-8′, $replace);
// 注释掉上面行后添加这行
}

The calling method is as follows:

$document->setValue(‘Template’, iconv(‘utf-8′, ‘GB2312//IGNORE’, ‘中文’));

The above code mainly solves the template problem,

The same principle applies below , solve the problem of adding text to Section,

Find the code $givenText = utf8_encode($text); in PHPWord/Section.php,

Delete or comment out this line of code, add $givenText = iconv('gbk', 'utf-8′, $text);, for example, the code is as follows:

public function addText($text, $styleFont = null, $styleParagraph = null) {
//$givenText = utf8_encode($text);   
 $givenText = iconv(‘gbk’, ‘utf-8′, $text);
// 注释掉上面行后添加这行
}

The above is the detailed content of How to solve php word garbled problem. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn