php解壓縮zip亂碼的解決方法:先開啟對應的PHP檔;然後用PHP的zip封裝協定解壓縮去解決ZipArchive亂碼即可。
本文操作環境:windows7系統、PHP7.1版,DELL G3電腦
php解壓縮zip檔案亂碼問題
官方的操作方法:
<?php $zip = new \ZipArchive; $zipfile = "./test.zip"; $res = $zip->open($zipfile); $toDir = "./test"; $s = $zip->extractTo($toDir); print_r(scandir($toDir));
存在的問題
如果zip是在windows平台壓縮的,那麼在linux伺服器執行以上程式碼將會出現亂碼,同時解壓縮出來的檔案也會缺少
解決方案
問題分析:
ZipArchive亂碼,是因為編碼不一致導致的,Windows的檔案系統是gbk編碼的,而PHP ZipArchive中的檔名是UTF-8編碼的。 Zip壓縮包中如果檔案名稱包含中文等特殊字符,用PHP ZipArchive解壓縮亂碼是必然的事。 ZipArchive壓縮文件出現亂碼或無法將文件壓縮進去,也是相同的道理
解決思路
不要用自帶的ZipArchive::extractTo()方法去解壓縮ZipArchive文檔,改用PHP的zip封裝協定解壓縮去解決ZipArchive亂碼。
解決程式碼
<?php $zip = new \ZipArchive; $zipfile = "./test.zip"; $res = $zip->open($zipfile); $toDir = "./test"; if(!file_exists($toDir)) { mkdir($toDir); } $docnum = $zip->numFiles; for($i = 0; $i < $docnum; $i++) { $statInfo = $zip->statIndex($i); if($statInfo['crc'] == 0) { //新建目录 mkdir($toDir.'/'.substr($statInfo['name'], 0,-1)); } else { //拷贝文件 copy('zip://'.$zipfile.'#'.$statInfo['name'], $toDir.'/'.$statInfo['name']); } } print_r(scandir($toDir));
推薦學習:《PHP影片教學》
以上是php 解壓縮zip 亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3漢化版
中文版,非常好用

Dreamweaver Mac版
視覺化網頁開發工具