在 PHP 中,使用 readdir()
函數讀取目錄時,如果目錄中包含多字節字符(如中文、日文等),可能會出現亂碼
要處理多字節字符,可以使用 mb_convert_encoding()
函數將讀取到的文件名轉換為正確的編碼格式。通常情況下,中文字符使用的編碼格式為 GBK 或 UTF-8。以下是一個示例:
<?php
$dir = "path/to/your/directory"; // 請替換為實際的目錄路徑
$handle = opendir($dir);
if ($handle) {
while (($filename = readdir($handle)) !== false) {
// 使用 mb_convert_encoding() 函數將文件名轉換為 UTF-8 編碼格式
$filename_utf8 = mb_convert_encoding($filename, "UTF-8", "GBK");
// 處理文件名(例如,輸出)
echo "Filename: " . $filename_utf8 . PHP_EOL;
}
closedir($handle);
} else {
echo "Error: Unable to open directory.";
}
?>
在這個示例中,我們首先使用 opendir()
函數打開目錄,然后使用 readdir()
函數逐行讀取目錄內容。對于每個文件名,我們使用 mb_convert_encoding()
函數將其從 GBK 轉換為 UTF-8 編碼格式。最后,我們可以對處理后的文件名進行進一步處理(例如,輸出)。