无法从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);