真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

phpziparchive中文亂碼的解決方法

小編給大家分享一下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中文亂碼的解決辦法:首先打開(kāi)壓縮包將內(nèi)部文件名及目錄進(jìn)行轉(zhuǎn)碼;然后在轉(zhuǎn)碼后關(guān)閉壓縮包并重新打開(kāi)解壓即可。

本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1版,DELL G3電腦

解決php使用ZipArchive解壓時(shí)中文亂碼問(wèn)題

使用php自帶的ZipArchive來(lái)解壓帶中文文件名壓縮包時(shí)會(huì)造成亂碼,現(xiàn)象如下:

原結(jié)構(gòu):

php ziparchive中文亂碼的解決方法

解壓代碼:
$zip = new \ZipArchive();
$res = $zip->open('./錢學(xué)森班.zip');
if ($res !== true){    
throw new \Exception('打開(kāi)壓縮包失敗');
}$zip->extractTo('./cache');
$zip->close();
解壓后:

php ziparchive中文亂碼的解決方法

原因

默認(rèn)windows,mac打壓縮包時(shí)編碼為簡(jiǎn)體中文,解壓時(shí)未作文件轉(zhuǎn)化導(dǎo)致解壓結(jié)果與預(yù)期不符

解決方法

打開(kāi)壓縮包后先將內(nèi)部文件名及目錄進(jìn)行轉(zhuǎn)碼,轉(zhuǎn)碼后需關(guān)閉壓縮包并重新打開(kāi)解壓

實(shí)現(xiàn)如下:

$zipName = './錢學(xué)森班.zip';
$zip = new \ZipArchive();
$res = $zip->open($zipName);
if ($res !== true){
    throw new \Exception('打開(kāi)壓縮包失敗');
}

// 加入此段↓
$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();

注意事項(xiàng)

  • 轉(zhuǎn)碼后因?yàn)樾薷牧嗽瓑嚎s包文件,所以不可重復(fù)轉(zhuǎn)碼,若不想對(duì)原文件產(chǎn)生影響需先復(fù)制(php-zip擴(kuò)展是自己讀文件流,不需要復(fù)制)

  • 轉(zhuǎn)換前使用mb_detect_encoding進(jìn)行編碼判斷依然是返回UTF-8

看完了這篇文章,相信你對(duì)“php ziparchive中文亂碼的解決方法”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


文章題目:phpziparchive中文亂碼的解決方法
轉(zhuǎn)載注明:http://weahome.cn/article/jjidoe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部