php ZipArchive 解压乱码问题


1、解决php ZipArchive 解压乱码问题
/**
* @param string $zipName 需要解压的文件路径加文件名
* @param string $dir 解压后的文件夹路径
* @return bool
*/
function extractZipToFile($zipName,$dir){
$zip = new \ZipArchive;
if ($zip->open($zipName) === TRUE) {
if(!is_dir($dir)) mkdir($dir,0775,true);
$docnum = $zip->numFiles;
for($i = 0; $i < $docnum; $i++) {
$statInfo = $zip->statIndex($i,\ZipArchive::FL_ENC_RAW);
$filename = $this->transcoding($statInfo['name']);
if($statInfo['crc'] == 0) {
//新建目录
if(!is_dir($dir.'/'.substr($filename, 0,-1))) mkdir($dir.'/'.substr($filename, 0,-1),0775,true);
} else {
//拷贝文件
copy('zip://'.$zipName.'#'.$zip->getNameIndex($i), $dir.'/'.$filename);
}
}
$zip->close();
return true;
}else{
return false;
}
}

function transcoding($fileName){
$encoding = mb_detect_encoding($fileName,['UTF-8','GBK','BIG5','CP936']);
if (DIRECTORY_SEPARATOR == '/'){ //linux
$filename = iconv($encoding,'UTF-8',$fileName);
}else{ //win
$filename = iconv($encoding,'GBK',$fileName);
}
return $filename;
}



免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM