PHP中通常使用file_exists()判斷某個文件或者文件夾是否存在,如果文件或文件夾存在則返回true,否則返回false。今天寫程序時發現,在網頁使用UTF8編碼的情況下,該函數對於中文文件名或者文件夾名不能返回正確值,始終返回false。猜測可能是編碼不同導致PHP不能正確判斷。
下面是不能夠返回正確值的代碼,無論文件是否在都返回不在:
1 <?php; 2 $file="/attachment/21/0/材料.rar"; 3 $newfile = dirname(__FILE__).$file; 4 5 echo file_exists($newfile); 6 ?>
增加了一句將UTF8編碼轉換為GB2312編碼的語句,改進后可以了正確判斷了:
1 <?php 2 $file="/attachment/21/0/材料.rar"; 3 $newfile = dirname(__FILE__).$file; 4 5 $file=iconv('UTF-8','GB2312',$file); 6 7 echo file_exists($newfile); 8 ?>