广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php压缩中文乱码问题如何解决
  • 690
分享到

php压缩中文乱码问题如何解决

2023-07-04 14:07:52 690人浏览 独家记忆
摘要

这篇“PHP压缩中文乱码问题如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php压缩中文乱码问题如何解决”文章吧。p

这篇“PHP压缩中文乱码问题如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php压缩中文乱码问题如何解决”文章吧。

php压缩中文乱码的解决方法:1、通过“composer require nelexa/zip”安装PhpZip;2、打开“ZipFile.php”;3、找到“extractTo”方法,将“is_writable”函数改掉或去掉;4、转换一下编码格式即可。

解决php使用ZipArcHive解压时中文乱码问题(纯php,绕开ZipArchive)

解决php使用ZipArchive解压时中文乱码问题

使用php自带的ZipArchive来解压带中文文件名压缩包时会造成乱码,现象如下:

php压缩中文乱码问题如何解决

网上查阅基本上给出的答案大同小异,自己照着同样的方法试了都不能解决,下图是网上给出的方案:

php压缩中文乱码问题如何解决

经过摸索终于找到了解决方案,那就是弃用ZipArchive,选择其他的途径,经过比较我选择了“PhpZip”,优点是:纯php(不需要扩展和类),下面介绍安装方法:

composer安装:

composer require nelexa/zip

登录后复制

如果选择版本的话:composer require nelexa/zip:^3.0 (3.0版本号)

使用方法:

//解压文件$fileAddess = "压缩包地址";$toDir = "解压目录";$zipFile = new \PhpZip\ZipFile();$zipFile->openFile($fileAddess) // open archive from file->extractTo($toDir); // extract files to the specified directory$zipFile->close();

登录后复制

注释:(**如果安装好使用正常请忽略下面的注释内容**)

我的压缩包放在共享盘里面连接的是smb地址,可能会出现报错:"Destination is not writable directory",这个坑已经踩过:打开ZipFile.php这个文件,找到“extractTo”方法,将“is_writable”函数改掉,或者去掉,然后再转换一下编码格式!,下面有注释的是我修改的内容!

    public function extractTo($destination, $entries = null)    {        if (!file_exists($destination)) {            throw new ZipException("Destination " . $destination . " not found");        }        if (!is_dir($destination)) {            throw new ZipException("Destination is not directory");        }        $is_really_writable = $this->is_really_writable($destination);        if (!$is_really_writable) {            throw new ZipException("Destination is not writable directory");        }                if (!empty($entries)) {            if (is_string($entries)) {                $entries = (array)$entries;            }            if (is_array($entries)) {                $entries = array_unique($entries);                $flipEntries = array_flip($entries);                $zipEntries = array_filter(                    $this->centralDirectory->getEntries(),                    function ($zipEntry) use ($flipEntries) {                                                return isset($flipEntries[$zipEntry->getName()]);                    }                );            }        } else {            $zipEntries = $this->centralDirectory->getEntries();        }        foreach ($zipEntries as $entry) {                        header("Content-type:text/html;charset=bgk");            $entry_getName = iconv('GB2312', 'UTF-8//ignore',$entry->getName());            //header("Content-type:text/html;charset=utf-8");                        $file = $destination . DIRECTORY_SEPARATOR . $entry_getName;            if ($entry->isDirectory()) {                if (!is_dir($file)) {                    if (!mkdir($file, 0755, true)) {                        throw new ZipException("Can not create dir " . $file);                    }                    chmod($file, 0755);                    touch($file, $entry->getTime());                }                continue;            }            $dir = dirname($file);            if (!is_dir($dir)) {                if (!mkdir($dir, 0755, true)) {                    throw new ZipException("Can not create dir " . $dir);                }                chmod($dir, 0755);                touch($dir, $entry->getTime());            }            if (file_put_contents($file, $entry->getEntryContent()) === false) {                throw new ZipException('Can not extract file ' . $entry_getName);            }            touch($file, $entry->getTime());        }        return $this;    }    //王天佑加的新逻辑,判断目录是否可写    public function is_really_writable($file){        if (DIRECTORY_SEPARATOR == '/' AND @ini_get("safe_mode") == FALSE) {            return is_writable($file);        }        if (is_dir($file)) {            $file = rtrim($file, '/') . '/' . md5(mt_rand(1,100) . mt_rand(1,100));            if (($fp = @fopen($file, "w+")) === FALSE) {                return FALSE;            }            fclose($fp);            @chmod($file, 0777);            @unlink($file);        } elseif (!is_file($file) OR ($fp = @fopen($file, "r+")) === FALSE) {            fclose($fp);            return FALSE;        }        return TRUE;    }

以上就是关于“php压缩中文乱码问题如何解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网PHP编程频道。

--结束END--

本文标题: php压缩中文乱码问题如何解决

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

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

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

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

下载Word文档
猜你喜欢
  • php压缩中文乱码问题如何解决
    这篇“php压缩中文乱码问题如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php压缩中文乱码问题如何解决”文章吧。p...
    99+
    2023-07-04
  • 怎么解决php压缩中文乱码问题
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。怎么解决php压缩中文乱码问题?解决php使用ZipArchive解压时中文乱码问题(纯php,绕开ZipArchive)解决php使用ZipArchive解压时中文...
    99+
    2022-11-14
  • 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
  • 如何解决 Ubuntu 中文乱码问题——文本、MP3和Rar压缩文件及aMule
    由于 Linux 中默认使用的编码是 UTF-8,与 Windows 的默认中文编码不同,因此在使用中会出现中文乱码问题。下面我们一起来看如何解决 Ubuntu 11.04 的一些中文乱码问题。 1. 解决文本乱码问...
    99+
    2022-06-03
    gedit Linux MP3 rar Ubuntu 中文乱码 压缩文件
  • python3 requests中文乱码之压缩格式问题解析
    我们在爬虫时,经常会遇见中文乱码问题,之前都是编码格式的问题,很少遇见由于压缩格式造成的编码混乱问题,特记录下。先看下混乱的编码样式。 b'a\xd4l\x00 G6\xb5...
    99+
    2022-11-11
  • php如何解决中文乱码问题
    小编给大家分享一下php如何解决中文乱码问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php解决中文乱码的方法:1、在head标签里面加入UTF8编码;2、在...
    99+
    2023-06-07
  • 解压版MYSQL中文乱码问题解决方案
    安装的是解压版的MYSQL 解压之后copy 一个my.ini文件 然后添加字节编码配置: [client] default-character-set=gbk [mysqld] character-set-se...
    99+
    2022-05-29
    MYSQL 中文乱码
  • 如何解决php xmlhttprequest 中文乱码问题
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑如何解决php xmlhttprequest 中文乱码问题解决XMLHttpRequest中文乱码问题通过XMLHttpRequest获取的数据,默认的字符编码是UTF-...
    99+
    2021-08-14
    php xmlhttprequest
  • 如何解决php gd中文乱码问题
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑如何解决php gd中文乱码问题?今天仔细研究了下GD的一些相关技术,顺手也研究下GD中文乱码的问题。 使用GD库输出中文字符串,调用imagestring是没有用的。需...
    99+
    2019-04-17
    php gd
  • java文件压缩乱码解决方法
    一、文件压缩的中文乱码问题中文文件名的乱码解决对于压缩的文件,当文件名称是中文时,若使用JDK API中自带的类(java.util.zip.ZipEntry; java.util.zip.ZipOutputStream;)进行压缩,压缩完...
    99+
    2021-05-16
    java 乱码
  • 如何解决php文件中文名乱码问题
    本文操作环境:Windows7系统,PHP7.1版,Dell G3电脑。如何解决php文件中文名乱码问题php上传文件中文文件名乱码的解决方法文件上传是我们在处理表单提交时候最常用的功能之一,今天写了一个小小的demo,如下:先看结构:ht...
    99+
    2019-04-10
    php 乱码
  • 解决OkHttp接收gzip压缩数据返回乱码问题
    目录问题请求头信息BridgeInterceptor拦截器问题 Retrofit 是现在最流行的网络开发框架之一,功能十分强大,但是最近确遇到一个十分坑的问题,现在记录下来,希望看到...
    99+
    2022-11-13
  • 如何解决php ci 中文乱码的问题
    本篇内容介绍了“如何解决php ci 中文乱码的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php ci中文乱码的解决办法:1、通过p...
    99+
    2023-06-20
  • 如何解决PHP UTF-8中文乱码问题
    本文小编为大家详细介绍“如何解决PHP UTF-8中文乱码问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何解决PHP UTF-8中文乱码问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。设置PHP文档编码...
    99+
    2023-07-05
  • 如何解决php的exit中文乱码问题
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑如何解决php的exit中文乱码问题?PHP exit函数输出中文是乱码在namespace 的后面加上下面这句代码就可以了header('Content-Typ...
    99+
    2015-12-30
    php exit
  • PHP怎么解决中文乱码问题
    这篇文章主要介绍“PHP怎么解决中文乱码问题”,在日常操作中,相信很多人在PHP怎么解决中文乱码问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP怎么解决中文乱码问题”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • php标题显示中文乱码问题如何解决
    本篇内容介绍了“php标题显示中文乱码问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php标题显示中文乱码的解决办法:1、在HT...
    99+
    2023-06-20
  • php如何解决乱码问题
    这篇文章主要讲解了“php如何解决乱码问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何解决乱码问题”吧!什么是乱码在网页开发中,乱码是指在浏览器中显示的字符集和实际编码不一致,导...
    99+
    2023-07-05
  • php如何解决url中文传参乱码问题
    本篇内容主要讲解“php如何解决url中文传参乱码问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何解决url中文传参乱码问题”吧!php解决url中文传参乱码问题的方法:1、使用ur...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作