Bug #71034 [Com]: Can't add UTF-8 filenames as UTF-8 to ZIP archive
| From: | slavikca at gmail dot com | Date: | Sat, 05 Dec 2015 06:48:23 +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-197611@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: Feedback
Type: Bug
Package: Zip Related
Operating System: Ubuntu 14.04
PHP Version: 5.6.16
Block user comment: N
Private report: N
New Comment:
Also, today tried to test with this system:
- PHP 7.0.0
- Ubuntu 14.04
- Zip version 1.13.0
- Libzip version 1.0.1
Same results. Archive created with filenames stored not in UTF-8.
Here is phpinfo page (may be removed later):
http://dev.slavikf.com/info.php
Previous Comments:
------------------------------------------------------------------------
[2015-12-05 02:24:58] slavikca at gmail dot com
1) is the current locale UTF-8
2) is the terminal charset UTF-8
Yes, all my locales are UTF-8:
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
3) is the actual filename string used in PHP UTF-8, especially the filename is hardcoded - your
script is UTF-8 encoded file
If your question about file, where I have PHP code, then - yes:
$ file index.php
index.php: PHP script, UTF-8 Unicode text
If you are saying, that I need to force PHP to use string in UTF-8 - I do not know, how to do it. Do
I have to use some commands / flags?
------------------------------------------------------------------------
[2015-12-05 02:07:15] ab@php.net
Please check the following:
- is the current locale UTF-8
- is the terminal charset UTF-8
- is the actual filename string used in PHP UTF-8, especially the filename is hardcoded - your
script is UTF-8 encoded file
Only if all of these match, it could be a bug in PHP on in libzip.
Thanks.
------------------------------------------------------------------------
[2015-12-04 21:45:39] slavikca at gmail dot com
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.
------------------------------------------------------------------------
[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