将情感进销存的编码从gb2312改变为utf8
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/363)的形式标明文章原始出处和作者信息及本声明。应一个朋友的需要,用免费开源的情感进销存给他开小店用,刚开始嘛,先试试看好用不。好像情感是国内仅存的免费、开源,又能用,还有人继续维护的进销存软件了,挺难得的。
情感进销存默认的编码全部都是gb2312的,从数据库到html,而我的环境自然是全utf8编码的ubuntu,如果是一次性转换的话,手工也是可以作的,但情感进销存如果出新版,还得从头改过,所以搞了个小脚本来自动转换:
#!/bin/bash
find . -name "*.txt" |xargs -I '{}' iconv_gb2u '{}'
find . -name "*.htm" |xargs -I '{}' iconv_gb2u '{}'
find . -name "*.php" |xargs -I '{}' iconv_gb2u '{}'
find . -name "*.sql" |xargs -I '{}' iconv_gb2u '{}'
#echo "Modify libs/mysql.class.php, change set names gbk to utf8."
# echo "Modify tpls/head.htm, head.emp.html, change http-equiv gbk to utf9"
replace "charset=gbk" "charset=utf8" -- install/*.php
replace "CHARSET=gbk" "charset=utf8" -- install/*.php
replace "SET NAMES 'gbk'" "SET NAMES 'utf8'" -- libs/mysql.class.php
replace "charset=gbk" "charset=utf8" -- tpls/*.htm
# For safe
chmod -x `basename $0`
其中用到的iconv_gb2u也是一个小脚本,作用是使用iconv命令把gb2312编码的文件转换为utf8,原生的iconv只能转换,不能回写同名文件,用这个脚本写到临时文件再拷回来覆盖。
再转回来说咱们的php程序的编码转换,首先要把所有的文件编码都转换了,包括txt类型的readme说明文件,htm类型的模板,php类型的程序,主要是为了看里面的注释,以及sql类型的数据库定义,里面还有初始化的数据,所以必须进行编码转换。这些转换用iconv就可以了,用find配合xargs一次性全部转换完毕。
接下来install/*.php中替换的是html页面的编码,以及执行安装sql创建数据表时指定表的默认编码;libs/mysql.class.php是连接数据库后指定客户端连接的字符集;tpls/*.htm则是替换html页面中的编码定义。这些用到了replace命令,replace可以把文件中的一个字符串替换为另外一个字符串,好像是mysql附带的实用小程序,在本例中够用了,再复杂一点的情况可以考虑使用sed,多行、正则替换都能够完成。
最后一句就简单了,如果对一个文件执行两次iconv,第一次把gb2312转成了utf8,可第二次就不知道转换成哪国编码了,所以为了避免程序被误运行两次,去掉可执行属性。
以后用起来就简单了,如果情感进销存再发布新版,先解压到一个临时文件夹,用这个脚本进行转换之后,再覆盖拷贝过来就可以了。
No tags for this post.
Save to Browser Favorites
Ask
backflip
blinklist
BlogBookmark
Bloglines
BlogMarks
Blogsvine
BUMPzee!
CiteULike
co.mments
Connotea
del.icio.us
DotNetKicks
Digg
diigo
dropjack.com
dzone
Facebook
Fark
Faves
Feed Me Links
Friendsite
folkd.com
Furl
Google
Hugg
Jeqq
Kaboodle
linkaGoGo
LinksMarker
Ma.gnolia
Mister Wong
Mixx
MySpace
MyWeb
Netvouz
Newsvine
PlugIM
popcurrent
Propeller
Reddit
Rojo
Segnalo
Shoutwire
Simpy
sk*rt
Slashdot
Sphere
Sphinn
Spurl.net
Squidoo
StumbleUpon
Technorati
ThisNext
Webride
Windows Live
Yahoo!
Email This to a Friend
If you like this then please subscribe to the
October 30th, 2007 at 21:38:48
恩,不错,可供俺借鉴一下。thanks
[Reply]
October 30th, 2007 at 22:42:01
能对大家有用我很高兴,原来还怕写出来太简单了些呢。
[Reply]