5

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」が得られます。

どうすれば修正できますか?

4

2 に答える 2

0

PHP が適切な UTF-8 サポートを持たない WinAPI の下で動作するため、このバグを回避する方法はありません。

于 2013-03-29T07:00:36.257 に答える
0

iconv 関数を使えば簡単にできます。ウィンドウの例:

iconv("WINDOWS-1250", "UTF-8", $name);
于 2015-02-10T18:21:55.723 に答える