2017-07-17 71 views
1

PHP ZipArchive不支持UTF8文件打开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"; 
     } 
+0

#rickdenhaan我的问题是打开的文件不能添加新文件。 – user3770797

+0

@rickdenhaan我的文件名是UTF8字符,但ZipArchive不打开这个文件。 – user3770797

+0

我会说这不是一个愚蠢的,但它绝对非常相关的:ZipArchive无法处理UTF-8,可能可以用类似的方式处理,但不完全相同。国际海事组织:不是一个骗局 –

回答

0

对不起标志着这个作为一个不相关的问题重复。

我可以使用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在那里不可用。