Edit report at http://bugs.php.net/bug.php?id=37738&edit=1

 ID:                 37738
 Updated by:         c...@php.net
 Reported by:        joey at alegria dot co dot jp
 Summary:            basename does not work with Japanese
-Status:             Wont fix
+Status:             Open
 Type:               Bug
 Package:            *Directory/Filesystem functions
 Operating System:   Fedora Core 4
 PHP Version:        5CVS-2006-06-08 (CVS)
 Block user comment: N
 Private report:     N

 New Comment:

I am reopening this as PHP 6 is not developed any more and the bug is
still valid.


Previous Comments:
------------------------------------------------------------------------
[2006-06-08 06:37:11] der...@php.net

Won't fix in PHP 5. This will be implemented for PHP 6.

------------------------------------------------------------------------
[2006-06-08 06:09:54] joey at alegria dot co dot jp

Description:
------------
Simply put, basename() does ot work with Japanese filepaths. If the
filename is Japanese only the extension part of the filename is
returned. So a filename "/folder/ƒtƒ@ƒCƒ‹–¼.txt" resolves to just
".txt". I discovered the problem when performing a basename() on the
$_FILES array's 'name' element for uploaded Japanese files, however
after testing the bug occurs no matter how you supply the filename.



My PHP environment is running with UTF-8 internal encoding.



The code snippet below illustrates this perfectly.

Reproduce code:
---------------
<?php

// show normal behavior with roman filename

$filename='/myfolder/roman_filename.txt';

echo "The full filename of the romanized file is $filename.\n"; //
/myfolder/roman_filename.txt

$basename=basename($filename);

echo "The basename of the romanized file is $basename.\n"; //
/roman_filename.txt

// show behavior with Japanese filename

$filename='/myfolder/“ú–{Œê‚̃tƒ@ƒCƒ‹–¼.txt';

echo "The full filename of the Japanese file is $filename.\n"; //
/myfolder/“ú–{Œê‚̃tƒ@ƒCƒ‹–¼.txt

$basename=basename($filename);

echo "The basename of the Japanese file is $basename."; // .txt

?>

Expected result:
----------------
The full filename of the romanized file is
/myfolder/roman_filename.txt.

The basename of the romanized file is roman_filename.txt.

The full filename of the Japanese file is
/myfolder/“ú–{Œê‚̃tƒ@ƒCƒ‹–¼.txt.

The basename of the Japanese file is “ú–{Œê‚̃tƒ@ƒCƒ‹–¼.txt.

Actual result:
--------------
The full filename of the romanized file is
/myfolder/roman_filename.txt.

The basename of the romanized file is roman_filename.txt.

The full filename of the Japanese file is
/myfolder/“ú–{Œê‚̃tƒ@ƒCƒ‹–¼.txt.

The basename of the Japanese file is .txt.


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



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

Reply via email to