开发者

PHP File Handling with UTF-8 Special Characters

开发者 https://www.devze.com 2023-04-06 16:50 出处:网络
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.

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消