Bug #53350 [Opn->Dup]: Cannot use paths that contain certain SJIS chars
| From: | pajoye@php.net | Date: | Fri, 19 Nov 2010 04:03:55 +0000 |
| Subject: | Bug #53350 [Opn->Dup]: Cannot use paths that contain certain SJIS chars | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-156210@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=53350&edit=1
ID: 53350
Updated by: pajoye@php.net
Reported by: php at madlon-kay dot com
Summary: Cannot use paths that contain certain SJIS chars
-Status: Open
+Status: Duplicate
Type: Bug
Package: Filesystem function related
Operating System: Windows XP SP3 Japanese
PHP Version: 5.3.3
Block user comment: N
Private report: N
New Comment:
We already have a feature request for unicode support on Windows, for
the file system functions.
Previous Comments:
------------------------------------------------------------------------
[2010-11-19 04:44:50] php at madlon-kay dot com
Description:
------------
Paths in Japanese WinXP are all handled in Shift-JIS encoding
('SJIS-win' for mb_convert_encoding(), etc.). Shift-JIS contains a
number of commonly-used characters for which the second byte is 0x5C
(e.g. 表, 0x955C). 0x5C happens to be the encoding for backslash \, the
escape character.
When one of these characters is contained within a path, a large number
of filesystem-related functions will fail to interpret the path
correctly, and will simply not work, or will do weird things such as
create or read unrequested files (see the provided test script for
details).
Test script:
---------------
<?php
// Assume file '表.txt' exists in the cwd
mb_internal_encoding('SJIS');
echo filesize('表.txt')); // This works ok
echo file_get_contents('表.txt'); // This fails: 'failed to open
stream: No such file or directory'
// Furthermore, if "表表.txt" exists then its contents will be shown
by the previous command (!?!?)
file_put_contents('表.txt', 'blahblahblah'); // A new file
'表表.txt'
is created (!?!?)
?>
Expected result:
----------------
file_get_contents() should read the correct file and not fail.
file_put_contents() should not create unrequested files.
Actual result:
--------------
file_get_contents(), is_file(), etc. fail to correctly interpret any
path containing 表 and other SJIS chars with a second byte of 0x5C.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=53350&edit=1