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 乱码怎么办的详细内容。