dokuwiki-chinese-filename-encoding-conversion

今天需要整理dokuwiki,里面有很多历史遗留的文档需要直接删除,虽然开放了samba共享,打开dokuwiki下的data目录,看到%ED%还是让我茫然。 赶紧google一下。呵呵。有人给出了解决方法和脚本, 感谢 勿慢牛

默认情况下,dokuwiki默认是使用urlencode函数对文件名进行编码后存储的,这样会在data文件夹下存在好多形如%ED%类的文件名,不利用管理和识别,如果你想改变这些,首先要更改dokuwiki对中文文件的存储方式,然后将以前的文件编码重新转换为正常的中文文件名。

首先第一步就需要批量处理了,此方法适用于linux系统。我使用的是debian,请大家参考执行:

安装uni2ascii工具:

sudo apt-get install uni2ascii 

编写脚本:

#!/bin/sh
 times=5
 itimes=0
 while [ "$itimes" -lt "$times" ]
 do
 for oldfile in `find $1 -name "*"`
 do
 newfile=`echo $oldfile|ascii2uni -aJ -q`
 mv -n -v "$oldfile" "$newfile"
 done
 itimes=$(($itimes+1))
 done

脚本的原理是,遍历目录并转换文件名,然后再将乱码的文件重命名为转换后的文件名。

因为我shell学得不好,所以有一个问题没有解决–在脚本执行过程中,如果目录已经被更改,脚本继续执行的时候被更改过名字的目录下的文件会无法定位,所以此脚本需要多执行几次,具体次数要视最大目录层数决定,脚本默认5次,如果你目录较多,可以更改times=数字,来决定脚本执行次数。这是一个小问题,脚本并不会损坏文件,只是多执行几次,请放心使用。

脚本编写完成后,执行:

sh 脚本名字 被执行的目录   #例如 sh asciiconv.sh /var/www/dokuwiki/data

tips
  1. 如果你开了samba共享,记得修改smb.cnf文件
display charset=UTF-8
unix charset=UTF-8
dos charset=cp936
     2. 记得修改dokuwiki后台的配置设置部分
fnencode

默认为 url ,请同样更改为utf-8 ,否则你先前的中文文章会提示无法找到。切记!

如图示dokuwiki-url-utf-8

原文地址: dokuwiki中文文件名编码转换

点赞
  1. 格子说道:

    帮我加个友情链接

    猇亭论坛
    http://www.i3xt.com

    我是格子~~~~有事可以MSN或EMAIL我。。

  2. wanjie说道:

    链接搞定,地方论坛门户玩得挺转啊。

  3. 格子说道:

    谢谢了,我也加了您博客的链接了。
    没想到你办事速度真快。呵呵。
    这论坛是我自己办的,办了半年了。折腾着玩~

  4. wanjie说道:

    正好看到了^o^,玩论坛需要一定的精力哦,^_^

  5. 格子说道:

    不是玩论坛,是自己做的本地论坛,做了近半年了。现在人气还不错。收录各方面稳定。 对了,哥们是做什么工作的, 一直蛮有兴趣,但没问

发表评论

电子邮件地址不会被公开。 必填项已用*标注