php壓縮文件時資料夾亂碼的解決方法:1、修改「pclzip.php」類別文件,內容為「mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8' );」;2、 在不改動類別包檔的情況下,修改「iconv("GBK","UTF-8//IGNORE",$file);」即可。
本教學操作環境:windows7系統、PHP8.1版、Dell G3電腦。
php壓縮檔案時資料夾亂碼怎麼辦?
解決PHP PclZip 中文亂碼問題
#在使用Pclzip 時出現無法壓縮/解壓縮檔案的現象,追蹤錯誤訊息發現無法開啟檔案/目錄,但是資料夾權限正確,列印檔案路徑之後發現是亂碼。出現這個問題的原因是 windows下zip內的檔名編碼是 gb2312,而php使用的是 utf-8 編碼。
方法一:解決辦法是修改pclzip.php 類別檔案:
壓縮檔案部分修改:
privAddFile 方法中的:
//$p_header['stored_filename'] = $p_filedescr['stored_filename']; // 修改为下面一行
$p_header['stored_filename'] = mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8');
解壓縮文件部分修改:
privExtractFile 方法中的:
$p_entry['filename'] = $p_path."/".$p_entry['filename']; // 加入下面一行 $p_entry['filename'] = mb_convert_encoding($p_entry['filename'], 'UTF-8', 'gb2312');
方法二: 在不改動類別套件檔案的情況下 解壓縮中文檔案名稱亂碼 可用一下程式碼 偽程式碼如下:
$file_type = mb_detect_encoding($file,array('ASCII','GB2312','GBK','UTF-8','LATIN1','BIG5')); if($file_type=='EUC-CN'){ $file = iconv("GBK","UTF-8//IGNORE",$file); }
$file 即解壓縮後的正常的檔名,但此方法伺服器上的檔名還是亂碼的,只是成型中$file 為正常中文檔名。
推薦學習:《PHP影片教學》
以上是php壓縮檔案時資料夾亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!