Bug #71034 [Com]: Can't add UTF-8 filenames as UTF-8 to ZIP archive

From: Date: Fri, 04 Dec 2015 21:45:40 +0000
Subject: Bug #71034 [Com]: Can't add UTF-8 filenames as UTF-8 to ZIP archive
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-197600@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=71034&edit=1

 ID:                 71034
 Comment by:         slavikca at gmail dot com
 Reported by:        slavikca at gmail dot com
 Summary:            Can't add UTF-8 filenames as UTF-8 to ZIP archive
 Status:             Open
 Type:               Bug
 Package:            Zip Related
 Operating System:   Ubuntu 14.04
 PHP Version:        5.6.16
 Block user comment: N
 Private report:     N

 New Comment:

In case, if it was not clear from my original issue description:

output of "unzip" from linux shows UTF-8 characters. So, that is example of adding
filename correctly, in UTF-8.

output of "unzip" from file, create in PHP shows filename seemingly correctly (same as
original), but it is not in UTF-8.
That's bad, because it will show correct filename only in the systems with same locale
settings. If it is different - it will be garbled. But UTF-8 will work correctly 100% on any system
(which supports UTF-8) with any locale.


Previous Comments:
------------------------------------------------------------------------
[2015-12-04 21:36:15] slavikca at gmail dot com

Description:
------------
*Steps to reproduce*
- use ZipArchive to archive file, which has UTF-8 characters in it.


Test script:
---------------
<?php
$zip = new ZipArchive();
if ($zip->open("test.zip", ZIPARCHIVE::CREATE) !== true)
    die ("Failed to create archive");

if (!$zip->addFile("/var/www/test/web/тест123")) //here are UTF-8
characters in the filename
    print ("Failure adding file");

$zip->close();

Expected result:
----------------
the name of archived file will be stored as UTF-8

Actual result:
--------------
file successfully archived. But it's names stored not in UTF-8.

To see, if filename was stored au UTF-8 or not, you can use "-U" option in unzip utility:

Here is output for archive created in PHP:
# unzip -l -U test.zip
...
   /var/www/test/web/тест123

Here is output for archive created by linux zip utility:
# unzip -l -U test2.zip
...
   /var/www/test/web/#U0442#U0435#U0441#U0442123


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=71034&edit=1


Thread (11 messages)

« previous php.bugs (#197600) next »