广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php压缩中文文件名乱码怎么办
  • 536
分享到

php压缩中文文件名乱码怎么办

2023-06-15 08:06:58 536人浏览 安东尼
摘要

这篇文章给大家分享的是有关PHP压缩中文文件名乱码怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php压缩中文文件名乱码的解决办法:首先将中文压缩包名用iconv函数转码;然后通过ZipArcHive的对象

这篇文章给大家分享的是有关PHP压缩中文文件名乱码怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

php压缩中文文件名乱码的解决办法:首先将中文压缩包名用iconv函数转码;然后通过ZipArcHive的对象处理zip文件即可。

本文操作环境:windows10系统、PHP7.1版,DELL G3电脑

PHP解压ZIP压缩包,解决中文乱码问题

修复原生ZipArchive的中文乱码问题

中文的zip压缩包名和中文的文件名会导致PHP原生自带的ZipArchive乱码,导致extractTo方法失效:

<?php$zip = new \ZipArchive;$zipfile = "./test.zip";$res = $zip->open($zipfile);$toDir = "./test";$s = $zip->extractTo($toDir);print_r(scandir($toDir));//作者:DORM_Script//链接:Http://www.jianshu.com/p/3efa924fd809

参考一篇blog,原作的解决办法是:

<?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));//作者:Dorm_Script//链接:http://www.jianshu.com/p/3efa924fd809

但是当$zipfile是中文编码时,也就是压缩包的名称是中文时,解压仍然会失败。

此时单独再将中文压缩包名用iconv函数转码后再使用:

    //zip文件名        $fileName = '中文.zip';        //zip文件相对服务器根目录的保存路径        $uploads_dir = "/Public/zipUpload";        //zip文件完整的保存路径        $zipName = $_SERVER['DOCUMENT_ROOT'].$uploads_dir.'/'.$fileName;        //将目标路径名称赋值为fileName最后的'.zip'四个字符之外的全部字符构成的字符串        $toDir = $_SERVER['DOCUMENT_ROOT'].$uploads_dir.'/'.substr($fileName,0,strlen($fileName)-4);        $zip = new \ZipArchive;//新建一个ZipArchive的对象                $res = $zip->open(iconv ( 'UTF-8', 'GB2312', $zipName));        if ($res === TRUE){            if (!is_dir(iconv ( 'UTF-8', 'GB2312', $toDir))) {                mkdir(iconv ( 'UTF-8', 'GB2312', $toDir), 0777, true);            }            //$zip->extractTo($toDir);            $docnum = $zip->numFiles;            for($i = 0; $i < $docnum; $i++) {                $statInfo = $zip->statIndex($i);                if($statInfo['crc'] == 0) {                    //新建目录                    mkdir(iconv ( 'UTF-8', 'GB2312', $toDir.'/'.$statInfo['name']), 0777, true);                } else {                    //拷贝文件,特别的改动,iconv的位置决定copy能不能work                    if(copy('zip://'.iconv ( 'UTF-8', 'GB2312', $zipName).'#'.$statInfo['name'], iconv ( 'UTF-8', 'GB2312', $toDir.'/'.$statInfo['name'])) == false){                        echo 'faild to copy';                    }                }            }            print_r(scandir(iconv ( 'UTF-8', 'GB2312',$toDir)));            $zip->close();//关闭处理的zip文件        }        else{            echo 'failed, code:'.$res.'<br>';        }

上述代码的输出:

Array(    [0] => .    [1] => ..    [2] => ��    [3] => Ҫ)

压缩包的目录:

中文.zip

├── 不

│   └── 要

│       └── dance.txt

└── 要

└── dance1.txt

感谢各位的阅读!关于“php压缩中文文件名乱码怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: php压缩中文文件名乱码怎么办

本文链接: https://www.lsjlt.com/news/278946.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php压缩中文文件名乱码怎么办
    这篇文章给大家分享的是有关php压缩中文文件名乱码怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php压缩中文文件名乱码的解决办法:首先将中文压缩包名用iconv函数转码;然后通过ZipArchive的对象...
    99+
    2023-06-15
  • php压缩文件时文件夹乱码怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php压缩文件时文件夹乱码怎么办?解决PHP PclZip 中文乱码问题在使用 Pclzip 时出现无法压缩/解压文件的现象,追踪错误信息发现无法打开文件/目录,但是...
    99+
    2022-10-28
  • php目录文件名中文乱码怎么办
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php目录文件名中文乱码怎么办?php读取目录中文文件名乱码解决方法:最近项目需要,读取指定文件夹下中文word文件,生成文件名列表。直接读取会乱码,文件名表名问题。解决...
    99+
    2019-12-23
    php
  • php 文件下载文件名乱码怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php 文件下载文件名乱码怎么办PHP下载文件名解决乱码通过把Content-Type设置为application/octet-stream,可以把动态生成的内容当作...
    99+
    2022-10-21
  • 怎么解决php压缩中文乱码问题
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。怎么解决php压缩中文乱码问题?解决php使用ZipArchive解压时中文乱码问题(纯php,绕开ZipArchive)解决php使用ZipArchive解压时中文...
    99+
    2022-11-14
  • Linux下中文文件名乱码怎么办
    本篇内容介绍了“Linux下中文文件名乱码怎么办”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1)先下载并安装两个语言包:fonts-chi...
    99+
    2023-06-27
  • java压缩文件乱码问题
    用java来打包文件生成压缩文件,有两个地方会出现乱码:内容的中文乱码问题:修改sun的源码。使用开源的类库org.apache.tools.zip.ZipOutputStream和org.apache.tools.zip.ZipEntry...
    99+
    2019-05-09
    java 乱码
  • php压缩文件时文件夹乱码如何解决
    本篇内容介绍了“php压缩文件时文件夹乱码如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php压缩文件时文件夹乱码的解决办法:1、修...
    99+
    2023-07-04
  • php Edge下载文件名乱码怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php Edge下载文件名乱码怎么办?解决乱码方法一  1、首先按组合键“WIN+R”打开运行窗口,输入“gpedit.msc”并回车;  2、打开本地组策略编辑器后...
    99+
    2022-11-09
  • php 新建文件名称乱码怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php 新建文件名称乱码怎么办?在windows下,PHP调用mkdir()、file_put_contents()、fopen()函数创建带有中文的目录或文档名时,...
    99+
    2022-11-04
  • 压缩文件密码忘记怎么办
    压缩文件密码忘记可以尝试使用一些常见的密码、使用一些密码恢复工具、考虑寻求专业的帮助和与压缩文件的创建者或发送者联系来解决,详情介绍:1、使用一些常见的密码,可能会使用简单的密码,如生日、手机号码、重要日期等;2、使用一些密码恢复工具,有许...
    99+
    2023-08-16
  • java文件压缩乱码解决方法
    一、文件压缩的中文乱码问题中文文件名的乱码解决对于压缩的文件,当文件名称是中文时,若使用JDK API中自带的类(java.util.zip.ZipEntry; java.util.zip.ZipOutputStream;)进行压缩,压缩完...
    99+
    2021-05-16
    java 乱码
  • PHP中怎么压缩文件夹
    PHP中怎么压缩文件夹,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。PHP拥有庞大的函数库,各个函数表现的功能又不尽相同,帮助我们实现很多功能。我们今天要为大家介绍的是PHP压...
    99+
    2023-06-17
  • mac压缩文件有多余文件怎么办 mac压缩文件软件哪个好
    随着苹果系统的不断升级更新,越来越多的Windows系统用户转向苹果系统怀抱。当然大家对于苹果系统的疑问也是不少,比如mac压缩文件有多余文件怎么办,mac压缩文件软件哪个好。下面通过本文,将为大家一一解答疑惑。 一、mac压缩文件有多余文...
    99+
    2023-09-11
    macos windows linux
  • php压缩中文乱码问题如何解决
    这篇“php压缩中文乱码问题如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php压缩中文乱码问题如何解决”文章吧。p...
    99+
    2023-07-04
  • 怎么解决php文件中文名乱码问题
    这篇文章主要介绍了怎么解决php文件中文名乱码问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php文件中文名乱码的解决办法:1、在php文件的头部加入charset代码:...
    99+
    2023-06-22
  • 怎么解决php目录文件名中文乱码
    这篇文章主要介绍“怎么解决php目录文件名中文乱码”,在日常操作中,相信很多人在怎么解决php目录文件名中文乱码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决php目录文件名中文乱码”的疑惑有所帮助!...
    99+
    2023-06-25
  • Linux中unzip解压时中文乱码怎么办
    这篇文章主要为大家展示了“Linux中unzip解压时中文乱码怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中unzip解压时中文乱码怎么办”这篇文章吧。Linux 中unzip...
    99+
    2023-06-09
  • php bom 中文乱码怎么办
    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑php bom 中文乱码怎么办PHP开发因BOM产生的乱码问题项目中要在php中直接下载csv文件,而文件下载后,在excel中显示乱码。所以要增加BOM,方式如下:$b...
    99+
    2019-08-21
    php bom 乱码
  • PHP mysqli 中文 乱码怎么办
    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。PHP mysqli 中文 乱码怎么办PHP mysqli新增数据中文乱码错误一、问题的出现在使用PHP mysqli连接数据库写入数据时,发现写入数据库的中文是乱码的...
    99+
    2020-11-17
    PHP mysqli
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作