dokuwiki中文文件名编码转换

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

第一步可参考上一篇文章http://klniu.com/post/dokuwiki-chinese-file-name-and-address-sitemap-garbled/更改。

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

安装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 /home/username/dokuwiki/data
This entry was posted in linux, 原创 and tagged , , , . Bookmark the permalink.

2 Responses to dokuwiki中文文件名编码转换

  1. wanjie says:

    哈哈,请允许我转载,整理目录dokuwiki时帮了大忙了。哈哈。

    回复

    勿慢牛 #
    2011年11月9日  10:18

    呵呵,可以

    回复

发表评论

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

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">