2025年3月26日 星期三 甲辰(龙)年 月廿五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 服务器 > 万维网络 > 其它源码

phpword 乱码如何解决

时间:07-16来源:作者:点击数:50

phpword 乱码如何解决?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

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

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);
  • // 注释掉上面行后添加这行
  • }

感谢各位的阅读!看完上述内容,你们对phpword 乱码如何解决大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注城东书院网站。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门