Windows上输出文件名是乱码,怎么办?

我的代码:

$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() 函数中的参数。

© 版权声明
THE END
喜欢就支持一下吧
点赞12
相关推荐
评论 抢沙发

请登录后发表评论

    暂无评论内容