首頁  >  文章  >  後端開發  >  php壓縮檔案時資料夾亂碼怎麼辦

php壓縮檔案時資料夾亂碼怎麼辦

藏色散人
藏色散人原創
2022-10-28 09:22:301379瀏覽

php壓縮文件時資料夾亂碼的解決方法:1、修改「pclzip.php」類別文件,內容為「mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8' );」;2、 在不改動類別包檔的情況下,修改「iconv("GBK","UTF-8//IGNORE",$file);」即可。

php壓縮檔案時資料夾亂碼怎麼辦

本教學操作環境: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn