用户工具

站点工具

导航栏

基本语法


交流留言

wiki:dokuwiki:解决dokuwiki无法以中文页面名链接及页面目录名乱码问题



解决Dokuwiki无法以中文页面名链接及页面目录名乱码问题

本人代码小白,穷尽了网上所有的办法,终于解决了这一难题。

1.修改文件\conf\local.php

在末尾增加:

$conf['fnencode'] = 'utf-8';

2.文件\inc\pageutils.php

  • LAMP环境:

修改utf8_encodeFN函数

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);
    }
 
   // $file = urlencode($file);                      //注释掉
   //   $file = str_replace('%2F','/',$file);        //注释掉
 
    return $file;
}

修改utf8_decodeFN函数

function utf8_decodeFN($file){
    global $conf;
    if($conf['fnencode'] == 'utf-8') return $file;
 
    if($conf['fnencode'] == 'safe'){
        return SafeFN::decode($file);
    }
 
   // return urldecode($file);          //注释掉
 
   return $file;                        //换成这句
}
  • WAMP环境:

修改utf8_encodeFN函数

function utf8_encodeFN($file,$safe=true){
    global $conf;
    if($conf['fnencode'] == 'utf-8') {
         $file=mb_convert_encoding($file,"CP936","UTF-8");       //增加的
    return $file;}
 
    if($safe && preg_match('#^[a-zA-Z0-9/_-.%]+$#',$file)){
        return $file;
    }
 
    if($conf['fnencode'] == 'safe'){
        return SafeFN::encode($file);
    }
 
   // $file = urlencode($file);                      //注释掉
   // $file = str_replace('%2F','/',$file);          //注释掉
 
    return $file;
}

修改utf8_decodeFN函数

function utf8_decodeFN($file){
    global $conf;
    if($conf['fnencode'] == 'utf-8') {
         $file=mb_convert_encoding($file,"UTF-8","CP936");         //增加的
    return $file;}
 
    if($conf['fnencode'] == 'safe'){
        return SafeFN::decode($file);
    }
 
    // return urldecode($file);       //注释掉
 
    return $file;                     //换成这句
}

3.文件\inc\common.php

注释掉全部3处$id = idfilter($id);

    // $id = idfilter($id);    //注释掉

4.编辑和上传需注意

所有页面文件外源编辑后,都要以utf-8格式保存。上传到主机空间时,一定要使用ftp软件上传到data/pages目录下。

5.删除data/attic和cache中的所有缓存文件

如此之后,dokuwiki无法以中文页面名链接以及页面名、目录名乱码的问题就得以解决。 分别在远程主机(LAMP)、手机(LAMP)和本地计算机(WAMP)上亲测,运行良好。

首篇前一篇后一篇末篇

wiki/dokuwiki/解决dokuwiki无法以中文页面名链接及页面目录名乱码问题.txt · 最后更改: 2020/05/16 19:50 (外部编辑)

oeffentlich