我的代碼:
$filesss = glob('./pic/*.jpg');
print_r($filesss);在Windows環境上運行後,輸出的文件名是亂碼。
亂碼原因:
在Windows上,PHP默認使用系統默認的編碼來處理文件名,這可能導致中文或其他非ASCII字符的文件名在輸出時顯示爲亂碼。
解決辦法:
使用 iconv() 函數將文件名轉換爲合適的編碼再輸出。
最終代碼:
$filesss = glob('./pic/*.jpg');
// 遍歷文件數組,並使用 iconv 函數轉換編碼
foreach ($filesss as $file) {
// 將文件名從系統默認編碼轉換爲 UTF-8
$file_utf8 = iconv("CP936", "UTF-8", $file); // CP936 是 Windows 下的默認中文編碼
// 輸出轉換後的文件名
echo $file_utf8 . "\n";
}iconv("CP936", "UTF-8", $file)是 將 Windows 默認的中文編碼(CP936,也稱爲 GBK)轉換爲 UTF-8 編碼,從而輸出正確的文件名。
如果文件名的原始編碼不是 CP936,而是其他編碼(如 UTF-8),則需要根據實際情況調整 iconv() 函數中的參數。