5

It seems that File Handling in PHP doesn't work with certain characters (e.g. €) encoded UTF-8 if the path is 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().

IMSoP
  • 89,526
  • 13
  • 117
  • 169
huuerequer
  • 131
  • 1
  • 8

3 Answers3

0

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);
Eugene Kaurov
  • 2,356
  • 28
  • 39
0

(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.

IMSoP
  • 89,526
  • 13
  • 117
  • 169
-1

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.

djn
  • 3,950
  • 22
  • 21
  • 1
    Hi. Thanks for your response. You gave me an idea. I try to encode it back to ANSI with something like this `$string = iconv(mb_detect_encoding($string, "auto"), 'Windows-1252', $string);` and it seems to do the trick. I haven't tested it fully yet but works for the string I posted (for now). – huuerequer Sep 22 '11 at 05:55