91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

宁德市| 盐山县| 宣化县| 汉中市| 榕江县| 咸阳市| 西昌市| 余庆县| 海阳市| 蕉岭县| 永清县| 温泉县| 洛隆县| 福泉市| 金坛市| 章丘市| 商南县| 苗栗县| 苏尼特右旗| 绥阳县| 甘德县| 江城| 若尔盖县| 咸宁市| 博野县| 渝中区| 遵义市| 桐城市| 甘南县| 阿坝县| 上饶县| 同心县| 新沂市| 南木林县| 横峰县| 新化县| 克什克腾旗| 武乡县| 桐城市| 应城市| 垫江县|