解決PHP PclZip 中文亂碼問題

2021-10-16 01:20:15 字數 1016 閱讀 2471

在使用 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 即解壓後的正常的檔名,但此方法 伺服器上的檔名還是亂碼的,只是成型中$file 為正常中文檔名。

解決中文亂碼

一 web應用程式中編碼相關的部分 1.jsp編譯 指定檔案的儲存編碼,很明顯,該設定應該置於檔案的開頭,例如 2.jsp輸出 指定檔案輸出到browser時使用的編碼,該設定也應該置於檔案的開頭,例如 該設定與response.setcharacterencoding gbk 等效 3.meta設...

解決中文亂碼

1.更改tomcat平台中的字元編碼 servlet.xml中的 中的乙個屬性 2.通過string中的亂碼解決方式來處理 核心句 byte bs name.getbytes iso8859 1 還原出原來 的位元組編碼 name new string bs,utf 8 3.request.setc...

Linux 中文亂碼解決

修改 linux 系統 ect profile 檔案 在最後麵加 export lc all zh cn.gb18030 修改 etc sysconfig i18n檔案 lang zh cn.gb18030 language zh cn.gb18030 zh cn.gb2312 zh cn supp...