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] paj...@php.net

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] paj...@php.net

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

Reply via email to