如何解决php读取word 中文乱码问题
php讀取word中文亂碼的解決辦法:1、查看php版本;2、修改php.ini并且重啟服務(wù)器;3、通過(guò)“iconv('GB2312', 'UTF-8', $test);”解決讀取過(guò)程中亂碼問(wèn)題即可。
本文操作環(huán)境:Windows7系統(tǒng),PHP7.4版,Dell G3電腦。
如何解決php讀取word 中文亂碼問(wèn)題?
php讀取word文件過(guò)程中亂碼,怎么解決?
一、首先要確認(rèn)php版本,最好是高于5.6
二、啟用PHP Com 擴(kuò)展
// 將以下兩行代碼放入php.ini中, 并且重啟服務(wù)器// 開啟擴(kuò)展extension=php_com_dotnet.dll// COM擴(kuò)展里自帶的,只需將前面的;去掉就可以了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); // 讀取內(nèi)容 $test= $word->ActiveDocument->content->Text; // 統(tǒng)計(jì)字?jǐn)?shù) // $num = strlen($test); // 解決讀取過(guò)程中亂碼問(wèn)題 $content= iconv('GB2312', 'UTF-8', $test); // 查看版本 // $word_wersion = $word->Version; // 是否要打開文件,0代表否,1代表是 $word->Visible = 0; // 關(guān)閉word句柄 $word->Quit(); // 釋放對(duì)象 $word = null; return [ // 'num' => $num / 2, // 'word_wersion' => $wordWersion, 'content' => $content ]; }
注意:
問(wèn)題一:
文件url有一個(gè)地方需要注意,就是你們傳進(jìn)來(lái)的url千萬(wàn)不能是絕對(duì)地址,不能是D:\\WWW\\這種,,一定要自己框架的路由地址,比如localhost/…,不然會(huì)出現(xiàn)錯(cuò)誤,因?yàn)橛媒^對(duì)地址讀取word內(nèi)容,只能讀取一次,然后word就會(huì)被鎖定,然后就無(wú)法讀取了。
問(wèn)題二:
使用這種方式雖然解決了讀取Word內(nèi)容亂碼的問(wèn)題,但是只限于讀取純文本的Word,而且是沒(méi)有樣式的那種。如果需要獲取Word文檔的內(nèi)容包括樣式、圖片、字體等,這種方式就不適合。
我們處理的方式是,采用Aspos。用Java做了一個(gè)底層服務(wù),把上傳的Word文檔都轉(zhuǎn)成html格式的,如果文檔中有圖片的話,轉(zhuǎn)換后圖片會(huì)被提取到同級(jí)目錄,并在生成的html文件中留下<img>標(biāo)簽。 這樣Word文檔中的字體和樣式就變成了了HTML代碼,最大程度保留了原文檔的樣式。
推薦學(xué)習(xí):《PHP視頻教程》
總結(jié)
以上是生活随笔為你收集整理的如何解决php读取word 中文乱码问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 为什么基于内容的读取缓存 (CBRC)
- 下一篇: css怎样设置删除线的粗细