PHP File Handling with UTF-8 Special Characters
It seems that File Handling in PHP doesn't work with certain characters (e.g. €) encoded UTF-8 if the path i开发者_如何学运维s hardcoded and the php-file saved as UTF-8.
Is it possible to make it work with all (or most western characters)? Is there a library which makes it possible maybe? Because I couldn't find any.
For example a folder named äöü&()éèàâêûô@$+ç%&=
!£_;{[]}~´¢¬§°#@¦…€` in windows won't work with is_dir().
For Windows the solution is to convert filename / folder name to Windows-1252 encoding:
$dir = 'فارسی';
$dir = iconv(mb_detect_encoding($dir, "auto"), 'Windows-1252', $string);
mkdir($dir);
(Note: this answer was added to the answer by the original user, and has been moved here to better fit the site format.)
Ok, I have found a solution. I haven't tested it fully yet, I'm not sure if it's foolproof yet and I don't know if this is the best practise but encoding the string back to ANSI seems to do the trick (at least for the string I posted).
$string = iconv(mb_detect_encoding($string, "auto"), 'Windows-1252', $string);
I guess this should work with the default setting of most western windows computers.
I'd refuse to work with such a folder too! :-)
Jokes apart, you might try to save the file as UTF-16, as this is supposed to be the encoding Windows uses internally.
精彩评论