• 技术文章 >后端开发 >PHP问题

    如何解决php word 乱码问题

    藏色散人藏色散人2020-10-22 09:42:57原创490

    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中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:word php 乱码
    上一篇:php declare用法详解 下一篇:php如何调用java方法
    大前端线上培训班

    相关文章推荐

    • 如何解决php post传参数乱码问题• 如何解决php imagettftext 乱码问题• 如何解决php request 乱码问题• 如何解决php下载文件内容乱码的问题

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网