【问题标题】:PHP ZipArchive dont support UTF8 files for openPHP ZipArchive 不支持打开 UTF8 文件
【发布时间】:2017-07-17 21:34:58
【问题描述】:

PHP ZipArchive 不支持打开 UTF8 文件

我的问题是使用 UTF8 名称打开文件。 ZipArchive 不打开带有 UTF8 字符的文件。我不添加新文件,我只需要打开文件。

php:5.6 并使用 Yii2。

代码:

$path = "files/تست تست.zip";
        $zip = new \ZipArchive();
        if($zip->open($path) === true) {

            return "File opened";
        }
        else
        {
            return "File could not be opened";
        }

【问题讨论】:

  • #rickdenhaan 我的问题是打开文件而不是添加新文件。
  • @rickdenhaan 我的文件名是 UTF8 字符,但 ZipArchive 没有打开这个文件。
  • 我会说这不是一个完全的骗局,但它绝对是非常相关的:ZipArchive 无法处理 UTF-8 并且可能以类似的方式处理,但不完全相同。 IMO:不是骗子
  • 我测试了 PclZip,但这不适用于 UTF8

标签: php utf-8 yii yii2 php-zip-archive


【解决方案1】:

很抱歉将此标记为不相关问题的重复。

我可以使用 PHP 5.6 毫无问题地打开 UTF-8 zip 文件。

此代码将毫无问题地使用该文件名创建一个新的 ZIP 文件,其中包含一个“test.txt”文件:

$path = "تست تست.zip";
$zip = new ZipArchive();

if($zip->open($path, ZipArchive::CREATE) === true) {
    echo "File opened\n";
    $zip->addFromString("test.txt", "Test file");
    $zip->close();
} else {
    echo "File could not be opened";
}

此代码将打开一个具有该名称的现有 ZIP 文件并从存档中打印出第一个文件名:

$path = "تست تست.zip";
$zip2 = new ZipArchive();

if($zip2->open($path) === true) {
    echo "File opened\n";
    echo $zip2->getNameIndex(0);
    $zip2->close();
} else {
    echo "File could not be opened";
}

这些示例在PHP Sandbox 和 phptester.com 上运行良好(没有可用的直接链接)。我也在 3v4l.org 上尝试过,但他们没有启用 php-zip 扩展,所以 ZipArchive 在那里不可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2021-06-13
    • 1970-01-01
    • 2014-04-16
    相关资源
    最近更新 更多