小編給大家分享一下php ziparchive中文亂碼的解決方法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)建站是一家專業(yè)提供徐州企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都做網(wǎng)站、H5建站、小程序制作等業(yè)務(wù)。10年已為徐州眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
php ziparchive中文亂碼的解決辦法:首先打開壓縮包將內(nèi)部文件名及目錄進(jìn)行轉(zhuǎn)碼;然后在轉(zhuǎn)碼后關(guān)閉壓縮包并重新打開解壓即可。
本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1版,DELL G3電腦
解決php使用ZipArchive解壓時中文亂碼問題
使用php自帶的ZipArchive來解壓帶中文文件名壓縮包時會造成亂碼,現(xiàn)象如下:
$zip = new \ZipArchive(); $res = $zip->open('./錢學(xué)森班.zip'); if ($res !== true){ throw new \Exception('打開壓縮包失敗'); }$zip->extractTo('./cache'); $zip->close();
默認(rèn)windows,mac打壓縮包時編碼為簡體中文,解壓時未作文件轉(zhuǎn)化導(dǎo)致解壓結(jié)果與預(yù)期不符
打開壓縮包后先將內(nèi)部文件名及目錄進(jìn)行轉(zhuǎn)碼,轉(zhuǎn)碼后需關(guān)閉壓縮包并重新打開解壓
實(shí)現(xiàn)如下:
$zipName = './錢學(xué)森班.zip'; $zip = new \ZipArchive(); $res = $zip->open($zipName); if ($res !== true){ throw new \Exception('打開壓縮包失敗'); } // 加入此段↓ $fileNum = $zip->numFiles; for ($i = 0; $i < $fileNum; $i++) { $statInfo = $zip->statIndex($i, ZipArchive::FL_ENC_RAW); $zip->renameIndex($i, iconv('GBK', 'utf-8//IGNORE', $statInfo['name'])); } $zip->close(); $zip->open($zipName); // 截至↑ $zip->extractTo($extractTo); $zip->close();
轉(zhuǎn)碼后因?yàn)樾薷牧嗽瓑嚎s包文件,所以不可重復(fù)轉(zhuǎn)碼,若不想對原文件產(chǎn)生影響需先復(fù)制(php-zip擴(kuò)展是自己讀文件流,不需要復(fù)制)
轉(zhuǎn)換前使用mb_detect_encoding進(jìn)行編碼判斷依然是返回UTF-8
看完了這篇文章,相信你對“php ziparchive中文亂碼的解決方法”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站題目:phpziparchive中文亂碼的解決方法
新聞來源:http://jinyejixie.com/article4/jjidoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、標(biāo)簽優(yōu)化、網(wǎng)站制作、做網(wǎng)站、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)