Edit report at http://bugs.php.net/bug.php?id=51929&edit=1
ID: 51929
Comment by: mikhail dot v dot gavrilov at gmail dot com
Reported by: kgo_yoi at hotmail dot com
Summary: Extracted a zip file that contains a folder named
with Chinese characters
Status: Assigned
Type: Bug
Package: Zip Related
Operating System: Windows XP Simplified Chinese
PHP Version: 5.2.13
Assigned To: pajoye
Block user comment: N
Private report: N
New Comment:
I also confirm this problem.
Workaround: Helps converting to your DOS encoding.
Previous Comments:
------------------------------------------------------------------------
[2011-02-18 14:05:12] [email protected]
At some point the library will support UTF-8 (as zip specs allow that).
But it is
not yet implemented.
------------------------------------------------------------------------
[2011-02-18 14:04:29] [email protected]
the library does nothing but to take the names you give as inputs.
The problem is also visible when a zip archive contains entries namend
using UTF-8
or other random encoding. These names are used to the filesystem APIs,
which
expect string endonded using the active run time CP.
------------------------------------------------------------------------
[2011-02-18 13:58:12] g dot faust at tarent dot de
Like Bug #53948 (ZIP archive UTF-8 filenames problem) the problem seems
to be the zip-implementation which (seems to) expects CP437 as valid
encoding for file-/foldernames.
using
$newFileOrFoldername = iconv('UTF-8', 'CP437//IGNORE//TRANSLIT',
$oldFileOrFoldername);
as a Workaround, you have to look that iconv() supports CP437.
After this Workaround it works* with Win7(64bit) and Ubuntu 10.4(64bit)
but the Archivemanager under Ubuntu 10.4(32bit) still shows wrong
characters.
*) With the converted Filename where characters not-matching CP437 will
be transliterated or even ignored - so it may be not a Workaround for
Chinese characters ...
------------------------------------------------------------------------
[2010-05-27 13:36:22] kgo_yoi at hotmail dot com
Description:
------------
Extracted a zip file contains a folder named with Chinese characters,
the files in the folder is no longer in it.
e.g.
I have 2 zips, the one named en.zip contains a folder named English
en.zip
|- English
|- en.txt
the other named zh.zip contains a folder named 䏿
zh.zip
|- 䏿
|- zh.txt
Then I use ZipArchive to extract them,
Test script:
---------------
<?php
$zip = new ZipArchive;
$zip->open('en.zip');
$zip->extractTo('.');
$zip->close();
$zip->open('zh.zip');
$zip->extractTo('.');
$zip->close();
Expected result:
----------------
There are 2 folders, 'English' and '䏿', each folder contains a txt
file.
Actual result:
--------------
The 'English' folder contains a txt file named en.txt; the '䏿'
folder is empty and zh.txt is out of it.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=51929&edit=1