elFinder没有显示带有变音符号的文件夹或文件

时间:2013-09-12 07:40:06

标签: utf-8 elfinder

我遇到了elFinder的问题。 当在服务器上有一个文件或包含其中一个字母öäü的文件夹时,目录(文件)将不会显示在el finder中并且我收到错误

  

lFinderConnector.class.php json_encode():无效的UTF-8序列   参数

但是,如果我上传一个文件与elFinder本身像:测试ö.png它正确显示在服务器上它看起来像这样:测试¶¶png。导演也一样。

我的问题是我有数以百万计的文件可能属于umlaute(ö,ü,ä)而elFinder无法显示它们。

其他人是否有这样的问题或有任何想法或提示如何解决它?

2 个答案:

答案 0 :(得分:0)

setlocale(LC_ALL, 'de_DE');
function array_walk_deep(&$items){
    foreach ($items as &$item) {
        if(is_array($item)) {
          array_walk_deep($item);
         } else {
            if (!strpos($item ,'ö')) {
                $item = iconv('UTF-8', 'ASCII//TRANSLIT', utf8_encode($item)) ;
            }

        }
    }
}

array_walk_deep($data);

所以我就这个做了一个解决方法。在elFinderConnector中,我只需使用这段代码,然后将数组返回到javascript,这将改变ä-> oeä-> ae和ü->你不会再造成任何问题,并会出示导演。用户可以在以后重命名目录和文件。 希望有人能找到这个有用的东西。

regrads

答案 1 :(得分:0)

你的解决方案用ASCII字符替换了变音符号,对我而言,只需在utf8_encode()之前使用$data数组json_encode()并输出它(它保留了变音符号)。
我拿了你的片段,修改它并将它添加到elFinderConnector类。

protected function array_walk_deep(&$items){
foreach ($items as &$item) {
    if(is_array($item)) {
        $this->array_walk_deep($item);
    } else {            
        $item = utf8_encode($item);
    }
}

然后在$data方法的output()数组中调用它。

$this->array_walk_deep($data);
exit(json_encode($data));