在 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 编码格式。最后,我们可以对处理后的文件名进行进一步处理(例如,输出)。