新聞中心
本文操作環(huán)境:Windows7系統(tǒng),php7.4版,Dell G3電腦。

如何解決php讀取word 中文亂碼問題?
php讀取word文件過程中亂碼,怎么解決?
一、首先要確認(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);
// 解決讀取過程中亂碼問題
$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
];
}
注意:
問題一:
文件url有一個(gè)地方需要注意,就是你們傳進(jìn)來的url千萬不能是絕對(duì)地址,不能是D:\WWW\這種,,一定要自己框架的路由地址,比如localhost/…,不然會(huì)出現(xiàn)錯(cuò)誤,因?yàn)橛媒^對(duì)地址讀取word內(nèi)容,只能讀取一次,然后word就會(huì)被鎖定,然后就無法讀取了。
問題二:
使用這種方式雖然解決了讀取Word內(nèi)容亂碼的問題,但是只限于讀取純文本的Word,而且是沒有樣式的那種。如果需要獲取Word文檔的內(nèi)容包括樣式、圖片、字體等,這種方式就不適合。
我們處理的方式是,采用Aspos。用Java做了一個(gè)底層服務(wù),把上傳的Word文檔都轉(zhuǎn)成html格式的,如果文檔中有圖片的話,轉(zhuǎn)換后圖片會(huì)被提取到同級(jí)目錄,并在生成的html文件中留下 標(biāo)簽。 這樣Word文檔中的字體和樣式就變成了了HTML代碼,最大程度保留了原文檔的樣式。
網(wǎng)站題目:如何解決php讀取word中文亂碼問題
本文鏈接:http://fisionsoft.com.cn/article/coedjos.html


咨詢
建站咨詢
