亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

田阳县| 东方市| 永兴县| 汝阳县| 马山县| 思茅市| 云梦县| 修武县| 河南省| 伊金霍洛旗| 任丘市| 凤庆县| 镇江市| 喀喇沁旗| 垦利县| 亳州市| 扎兰屯市| 三台县| 民丰县| 绥宁县| 水富县| 葫芦岛市| 团风县| 沧州市| 社旗县| 丹东市| 赣州市| 公安县| 攀枝花市| 城固县| 探索| 准格尔旗| 宁波市| 金溪县| 安达市| 龙泉市| 沭阳县| 嘉义市| 黄龙县| 桐庐县| 黄陵县|