写PHP函数的时候为了判断一个文件或目录是否存在的基本办法就是使用函数file_exists,以前一直使用此函数没有怎么过多考虑,今天写一个功能代码的时候突然发现在代码编码是UTF-8环境时,此函数不能正常的支持中文的路径或文件名。
代码文件编码是UTF-8时,file_exists('D:/test/测试文件夹.txt');或file_exists('D:/测试文件夹/test.txt');怎么判断都只会返回false值。
后来在网上查找资料才发现在UTF-8环境下判断时需要将中文专为GBK编码才行,及上面的代码要想正常工作必须更改成如下格式:file_exists(iconv('utf-8','gbk','D:/test/测试文件夹.txt'));及file_exists(iconv('utf-8','gbk','D:/测试文件夹/test.txt'));才行。
以后UTF-8环境下开发时先写个自定义函数,将file_exists功能包装下,防止在出现这个问题。当然Windows下才有这个问题,Linux用UTF-8真是一马平川。^_^