千家信息网

怎么解决php读取word中文乱码问题

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,这篇文章主要介绍"怎么解决php读取word中文乱码问题",在日常操作中,相信很多人在怎么解决php读取word中文乱码问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2024年11月22日怎么解决php读取word中文乱码问题

这篇文章主要介绍"怎么解决php读取word中文乱码问题",在日常操作中,相信很多人在怎么解决php读取word中文乱码问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么解决php读取word中文乱码问题"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

php读取word中文乱码的解决办法:1、查看php版本;2、修改php.ini并且重启服务器;3、通过"iconv('GB2312', 'UTF-8', $test);"解决读取过程中乱码问题即可。

本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。

如何解决php读取word 中文乱码问题?

php读取word文件过程中乱码,怎么解决?

一、首先要确认php版本,最好是高于5.6

二、启用PHP Com 扩展

// 将以下两行代码放入php.ini中, 并且重启服务器// 开启扩展extension=php_com_dotnet.dll// COM扩展里自带的,只需将前面的;去掉就可以了com.allow_dcom = true

三、代码如下:

    public function readWord($url)    {        $word = new COM("word.application") or die("Unable to instantiate Word");        // 打开路径为URL的word,doc或docx都可以        $word->Documents->OPen($url);        // 读取内容        $test= $word->ActiveDocument->content->Text;        // 统计字数        // $num = strlen($test);        // 解决读取过程中乱码问题        $content= iconv('GB2312', 'UTF-8', $test);        // 查看版本        // $word_wersion = $word->Version;        // 是否要打开文件,0代表否,1代表是        $word->Visible = 0;        // 关闭word句柄        $word->Quit();        // 释放对象        $word = null;        return [            // 'num' => $num / 2,            // 'word_wersion' => $wordWersion,            'content' => $content        ];    }

注意:

问题一:

文件url有一个地方需要注意,就是你们传进来的url千万不能是绝对地址,不能是D:\WWW\这种,,一定要自己框架的路由地址,比如localhost/…,不然会出现错误,因为用绝对地址读取word内容,只能读取一次,然后word就会被锁定,然后就无法读取了。

问题二:

使用这种方式虽然解决了读取Word内容乱码的问题,但是只限于读取纯文本的Word,而且是没有样式的那种。如果需要获取Word文档的内容包括样式、图片、字体等,这种方式就不适合。

我们处理的方式是,采用Aspos。用Java做了一个底层服务,把上传的Word文档都转成html格式的,如果文档中有图片的话,转换后图片会被提取到同级目录,并在生成的html文件中留下 标签。 这样Word文档中的字体和样式就变成了了HTML代码,最大程度保留了原文档的样式。

到此,关于"怎么解决php读取word中文乱码问题"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0