2017-07-17 70 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在那裏不可用。