我遇到了elFinder的问题。 当在服务器上有一个文件或包含其中一个字母öäü的文件夹时,目录(文件)将不会显示在el finder中并且我收到错误
lFinderConnector.class.php json_encode():无效的UTF-8序列 参数
但是,如果我上传一个文件与elFinder本身像:测试ö.png它正确显示在服务器上它看起来像这样:测试¶¶png。导演也一样。
我的问题是我有数以百万计的文件可能属于umlaute(ö,ü,ä)而elFinder无法显示它们。
其他人是否有这样的问题或有任何想法或提示如何解决它?
答案 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));