php解压zip乱码的解决方法

这篇文章给大家分享的是有关php解压zip乱码的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

成都创新互联公司服务项目包括界首网站建设、界首网站制作、界首网页制作以及界首网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,界首网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到界首省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

php解压zip乱码的解决办法:首先打开相应的PHP文件;然后用PHP的zip封装协议解压去解决ZipArchive乱码即可。

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解压zip乱码的解决方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

新闻标题:php解压zip乱码的解决方法
文章起源:https://www.cdcxhl.com/article6/pidiog.html

成都网站建设公司_创新互联,为您提供商城网站品牌网站设计做网站小程序开发电子商务自适应网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站托管运营