河畔志 首页 关于 链接

Dokuwiki 文件名中文乱码解决

本地搭了个 Dokuwiki 做知识库,但出现文件名乱码问题。

之前在 Linux 服务器上修改 conf/local.php 里的 $conf['fnencode'] = 'utf-8'; 就可以了,而简中 win7 使用 gbk 编码文件名:$conf['fnencode'] = 'gbk';

然后根据官方文档,照着修改了 inc/pageutils.php 中两个函数解决问题:

function utf8_encodeFN($file,$safe=true){
    global $conf;
    if($conf['fnencode'] == 'utf-8') return $file;
 
    if($safe && preg_match('#^[a-zA-Z0-9/_\-\.%]+$#',$file)){
        return $file;
    }
 
    if($conf['fnencode'] == 'safe'){
        return SafeFN::encode($file);
    }
 
   //新增下面这段代码
    if($conf['fnencode'] == 'gbk'){
        return mb_convert_encoding($file,'gbk','UTF-8');
    }
 
    $file = urlencode($file);
    $file = str_replace('%2F','/',$file);
    return $file;
}

function utf8_decodeFN($file){
    global $conf;
    if($conf['fnencode'] == 'utf-8') return $file;
 
    if($conf['fnencode'] == 'safe'){
        return SafeFN::decode($file);
    }
   //新增下面这段代码
    if($conf['fnencode'] == 'gbk'){
        return mb_convert_encoding($file,'UTF-8','gbk');
    }
 
    return urldecode($file);
}

固定链接: https://gearkey.vvnote.org/index.php/post-241.html 

发表评论:

(邮件地址不会被公开,同时用于显示与之关联的 Gravatar 头像)