中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php ziparchive中文亂碼的解決方法

發布時間:2021-05-28 10:09:38 來源:億速云 閱讀:892 作者:小新 欄目:編程語言

小編給大家分享一下php ziparchive中文亂碼的解決方法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

php ziparchive中文亂碼的解決辦法:首先打開壓縮包將內部文件名及目錄進行轉碼;然后在轉碼后關閉壓縮包并重新打開解壓即可。

本文操作環境:Windows7系統、PHP7.1版,DELL G3電腦

解決php使用ZipArchive解壓時中文亂碼問題

使用php自帶的ZipArchive來解壓帶中文文件名壓縮包時會造成亂碼,現象如下:

原結構:

 php ziparchive中文亂碼的解決方法

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

 php ziparchive中文亂碼的解決方法

原因

默認windows,mac打壓縮包時編碼為簡體中文,解壓時未作文件轉化導致解壓結果與預期不符

解決方法

打開壓縮包后先將內部文件名及目錄進行轉碼,轉碼后需關閉壓縮包并重新打開解壓

實現如下:

$zipName = './錢學森班.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();

注意事項

  • 轉碼后因為修改了原壓縮包文件,所以不可重復轉碼,若不想對原文件產生影響需先復制(php-zip擴展是自己讀文件流,不需要復制)

  • 轉換前使用mb_detect_encoding進行編碼判斷依然是返回UTF-8

看完了這篇文章,相信你對“php ziparchive中文亂碼的解決方法”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

土默特左旗| 思南县| 大关县| 称多县| 华阴市| 新津县| 赣榆县| 商南县| 射阳县| 尼勒克县| 自贡市| 永济市| 田阳县| 肃南| 杭州市| 永顺县| 高邑县| 凉城县| 蒙阴县| 平顶山市| 阳江市| 九龙城区| 四子王旗| 宁阳县| 洮南市| 新津县| 江安县| 东源县| 忻州市| 深泽县| 乐昌市| 七台河市| 马边| 三门峡市| 游戏| 万年县| 临猗县| 潍坊市| 女性| 西乌珠穆沁旗| 龙门县|