php 打开word乱码,如何解决php word 乱码问题

php word乱码的解决办法:首先打开“/Writer/Word2007/Base.php”文件;然后添加“$objWriter->writeAttribute(‘w:eastAsia’, $font)”内容;最后保存修改即可。

ac671da2775fbe4306121f2ccdf3cead.png

推荐:《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);

// 注释掉上面行后添加这行

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值