special characters in “file_exists” problem (php)

后端 未结 1 1309
后悔当初
后悔当初 2020-11-30 12:44

I use special characters (swedish letters åäö).

Now, I have some folders, which contains images for classifieds. The folders are named by category.

f         


        
相关标签:
1条回答
  • 2020-11-30 13:42

    What's the server OS?

    If it's Windows, you'll not be able to access files under a UTF-8-encoded filename, because the Windows implementation of the C IO libraries used by PHP will only talk in the system default code page. For Western European installs, that's code page 1252. You can convert a UTF-8 string to cp1252 using iconv:

    $winfilename= iconv('utf-8', 'cp1252', $utffilename);
    

    (utf8_decode could also be used, but it would give the wrong results for Windows's extension characters that map to the range 0x80-0x9F in cp1252.)

    Files whose names include characters outside the repertoire of the system codepage (eg. Greek on a Western box) cannot be accessed at all by PHP and other programs using the stdio. There are scripting languages that can use native-Unicode filenames through Win32 APIs, but PHP5 isn't one of them.

    And of course the step above shouldn't be used when deployed on a different OS where the filesystem is UTF-8-encoded. (ie. modern Linux.)

    If you need to seamlessly cross-server-compatible with PHP, you'll have to refrain from using non-ASCII characters in filenames. Sorry.

    0 讨论(0)
提交回复
热议问题