scandir问题在Linux中的口音在OSX中工作良好


scandir issue with accents in Linux work fine in OSX

嗨,我使用下一个函数在我的网站上创建一个树目录菜单,目录包括很多pdf和excel,有时这个文件的名称有口音,空格和ñ,我的应用程序在OSX (mac)中工作完美,但很快我在我的godaddy服务器(linux)中上传,所有带有口音的字符都被?字符取代,打破了所有的名称和链接。你知道如何处理这个问题吗?我一直在阅读关于urlencode, urlrawencode,包括我读到的,这个评论在php文档站点作为评论:

Scandir不能正确处理非英语字符(如法语)文件名中的重音(例如:éàçè…)。PHP没有直到PHP 6才支持unicode操作,这不是一个bug。

我希望有人能帮我解决这个问题

function listFolderFiles($dir){
    $ffs = scandir($dir);
    echo '<ul class="transparencia">';
    foreach($ffs as $ff){
        if($ff != '.' && $ff != '..' && $ff != '.DS_Store'){
            $stringFileDir = $dir.'/'.$ff;
            echo '<li>';
            if(is_file($stringFileDir)){
                echo "<a href='transparencia/".$dir.'/'.$ff."' data-type='".pathinfo($stringFileDir)['extension']."' target='_blank'>".$ff."</a>";
            }else{
                echo "<span class='more'>+</span>".urldecode($ff);
            }

                if(is_dir($dir.'/'.$ff)){
                    listFolderFiles($dir.'/'.$ff);
                }
            echo '</li>';
        }
    }
    echo '</ul>';
}

答案很简单,linux不接受口音,所以现在不可能在linux服务器上使用scandir,如果你想要口音,这就是为什么在OSX工作,也在Windows。最后我改了剧本