不能读取UTF-8文件名


Can't read UTF-8 file names

无法从Windows文件系统读取UTF-8文件名(Windows主要语言是英语)

<?php
$path_to_read = 'D:'music';
class AudioFilterIterator extends FilterIterator
{
    public function accept()
    {
        return (strpos(parent::current(), '.mp3'));
    }
}
$object = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path_to_read));
$iterator = new AudioFilterIterator($object);
echo "<pre>";
$files = array();
foreach($iterator as $file)
{
    echo $file . "'n";
}

因此,例如,我有一个名为"10 Hört auf.mp3"的文件,但作为输出,我得到"10 Hort auf.mp3"

我该如何修复它?

由于PHP在WinAPI下工作,没有合理的UTF-8支持,因此无法解决此错误。

您可以通过使用iconv函数轻松实现。windows示例:

iconv("WINDOWS-1250", "UTF-8", $name);