php ziparchive中文乱码怎么办

php ziparchive中文乱码的解决办法:首先打开压缩包将内部文件名及目录进行转码;然后在转码后关闭压缩包并重新打开解压即可。

php ziparchive中文乱码怎么办

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

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

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

原结构:

 php ziparchive中文乱码怎么办

立即学习“PHP免费学习笔记(深入)”;

解压代码:

$zip = new ZipArchive();$res = $zip->open('./钱学森班.zip');if ($res !== true){    throw new Exception('打开压缩包失败');}$zip->extractTo('./cache');$zip->close();

登录后复制

 解压后:

 php ziparchive中文乱码怎么办

原因

默认windows,mac打压缩包时编码为简体中文,解压时未作文件转化导致解压结果与预期不符

解决方法

打开压缩包后先将内部文件名及目录进行转码,转码后需关闭压缩包并重新打开解压

实现如下:

$zipName = './钱学森班.zip';$zip = new ZipArchive();$res = $zip->open($zipName);if ($res !== true){    throw new Exception('打开压缩包失败');}// 加入此段↓$fileNum = $zip->numFiles;for ($i = 0; $i statIndex($i, ZipArchive::FL_ENC_RAW);    $zip->renameIndex($i, iconv('GBK', 'utf-8//IGNORE', $statInfo['name']));}$zip->close();$zip->open($zipName);// 截至↑$zip->extractTo($extractTo);$zip->close();

登录后复制

注意事项

转码后因为修改了原压缩包文件,所以不可重复转码,若不想对原文件产生影响需先复制(php-zip扩展是自己读文件流,不需要复制)

转换前使用mb_detect_encoding进行编码判断依然是返回UTF-8

推荐学习:《PHP视频教程》

以上就是php ziparchive中文乱码怎么办的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2513840.html

(0)
上一篇 2025年3月5日 15:18:32
下一篇 2025年2月24日 04:40:23

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • PHP如何使用Mcrypt加密

    本篇文章给大家介绍一下php使用mcrypt加密的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 今天我们来学习的是 PHP 中的一个过时的扩展 Mcrypt 。在 PHP7 之前,这个扩展是随 PHP 安装包一起内…

    2025年3月5日
    200
  • PHP如何使用Callback/Callable类型

    本篇文章给大家介绍一下php使用callback/callable类型的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 PHP Callback/Callable 类型使用 测试代码 <?php /** * C…

    2025年3月5日
    200
  • 如何获取PHP命令行参数

    本篇文章给大家介绍一下获取php命令行参数的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 如何获取PHP命令行参数 使用 PHP 开发的同学多少都会接触过 CLI 命令行。经常会有一些定时任务或者一些脚本直接使用命…

    2025年3月5日
    200
  • 什么是PHP Cookie?如何创建?又如何删除呢?

    上篇文章给大家介绍了《关于php文件的那些“事”!!!》,本文继续给大家介绍什么是php cookie?如何创建?又如何删除呢? 希望对你们有所帮助吖! Cookie 是什么?  cookie 常用于识别用户。cookie 是一种服务器留在…

    2025年3月5日 编程技术
    200
  • php怎么将数组转为字符串并以逗号隔开

    转换方法:1、使用join()函数,可以返回一个由数组元素组合成的字符串,语法格式“join(“,”,数组)”;2、使用implode()函数,可以将一个一维数组转化为字符串,语法格式“mplode(“,…

    2025年3月5日
    200
  • php定义字符串有几种方法

    php定义字符串有4种方法:1、用单引号进行定义,例“’abc’”;2、用双引号进行定义,例“”abc””;3、利用heredoc语法糖进行定义,它是一种在命令行shell和程序语言里定义字符…

    2025年3月5日 编程技术
    200
  • php出现了一个非常奇怪的报错!

    本篇文章向大家介绍php一个非常奇怪的报错,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 首先我们来看一下是什么奇怪的报错!? Argument 1 passed to adminscomponentsAnswer::b…

    2025年3月5日
    200
  • 如何用PHP编写 E-mail的程序文件?

    上篇文章给大家介绍了《什么是php cookie?如何创建?又如何删除呢?》,本文继续给大家介绍如何用php建立 e-mail文件?本篇文章将会带领大家一起去学习e-mail的魅力。 PHP 发送电子邮件,PHP 允许您从脚本直接发送电子邮…

    2025年3月5日
    200
  • php怎么忽略大小写的进行字符串替换

    忽略大小写替换的方法:1、使用str_ireplace()函数,语法“str_ireplace(查找值,替换值,字符串)”;2、使用substr_replace()函数,语法“substr_replace(字符串,替换值,开始替换位置)”。…

    2025年3月5日
    200
  • 什么是PHP 过滤器?有那几种过滤器呢?

    上篇文章给大家介绍了《如何用php编写 e-mail的程序文件?》,本文继续给大家介绍什么是php 过滤器?有那几种过滤器呢?一起出发吧! 什么是 PHP 过滤器? PHP 过滤器用于验证和过滤来自非安全来源的数据。 测试、验证和过滤用户输…

    2025年3月5日 编程技术
    200

发表回复

登录后才能评论