dedeCMS等类似系统将gbk版本转换为utf-8版本(gbk to utf-8)
来源:互联网 发布:mac电脑的杀毒软件 编辑:程序博客网 时间:2024/06/05 04:49
一、为什么要将gbk转换为utf-8?gbk编码与utf-8有什么区别?
在织梦DedeCMS官方发布的版本中(其他的如discuz等),主要有两个版本。一个是GBK版本,一个是UTF-8版本,从程序实现的功能上来说,织梦Dedecms的GBK版本与UTF-8版本功能是一样的,没有本质的区别,只不过编码方式不同而已。
物尽其用,织梦出这两个版本的原因也是为了满足不同人的不同需要,只要能实现你想要的功能,用哪个版本的区别不是很大。当然,细微区别还是有的,不然也没必要出两个版本了。具体如下:
- GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的网站则用UTF-8节省空间。
- GBK包含中日韩字符集合,他能完美支持简体中文和英文,但如果在IE没有安装简体中文支持的电脑上阅读GBK编码的网页,中文会变成乱码;UTF-8则包含全世界所有国家需要用到的字符。
- GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准,UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。 所以,对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。
如果你的网站客户群体主要是面向国内用户的,建议使用GBK版本,因为它可以节省空间,并且相对utf-8版本来讲稳定一些。织梦论坛上的很多插件也都支持GBK版本的。如果你的网站有很多其他的程序,比如要整合论坛、博客什么的,可以使用UTF-8版本,因为比较通用,不会造成错码等错误。
为了将dedecms与discuz更好的整合,决定将(已经二次开发到了一半的)dedecms系统的编码转换为utf-8。主要有两步,一是数据库编码的转换;另一个是代码本身编码的转换。
二、数据库编码的转换,原来的是gbk_chinese_ci,现要将其转换为utf8_general_ci
- 使用mysqldump导出表结构,如:
mysqldump -d -uroot -p 数据库名 > /home/hui/struct.sql
- 使用mysqldump以特定编码导出数据(其中utf8为所需编码,可按需修改),如:
mysqldump --default-character-set=utf8 -t -uroot -p 数据库名 > /home/hui/data.sql
- 打开表结构转存(/home/hui/struct.sql),将所有CREATE TABLE中的编码替换为所需编码;
用vi替换的语句: :%s/gbk/utf8/g#这里是将gbk替换为utf8
- 进入mysql控制台,导入表结构与数据:(执行语句前需建好要导入的数据库)
source /home/hui/struct.sql;source /home/hui/data.sql;
三、代码编码转换
有两部份,一是将html页面设置的头部编码修改,即将
<meta http-equiv="Content-Type" content="text/html; charset=gbk}">
头部编码设置为utf-8,以dedecms为例,在/include/common.inc.php里面,找到$cfg_soft_lang,并将其设置为utf-8即可。
第二种是代码本身自己的编码要转换为utf-8。这里采用了shell脚本来进行转换,如下:
1 #/bin/bash 2 #convert encoding to UTF-8 3 if [ "$#" != "1" ] 4 then 5 echo "Usage:`basename $0` dir " 6 exit 7 fi 8 9 dir=$1 10 echo $1 11 12 for file in `find $dir -name "*.php" -o -name "*.htm" -o -name "*.html" -o -name "*.js" -o -name "*.css" -o -name "*.txt"` 13 do 14 echo "$file" 15 enconv $file 16 done
不熟悉enconv的童鞋可以参照:《安装enca》,也可以用iconv来转换:
iconv -f gbk -t utf8 -o $file $file
编码转换之后,去缓存,更新网站,重新生成静态页即可。
- dedeCMS等类似系统将gbk版本转换为utf-8版本(gbk to utf-8)
- [Linux系统编程]将GBK转换成UTF-8
- 将GBK转码为UTF-8
- 编码转换:UTF-8 BOM to GBK
- ASCii GBk UTF-8等
- dedecms网站GBK与UTF-8相互之间怎么转换
- Ubuntu转换文件编码格式(gbk to utf-8 )
- gbk 与 UTF-8 转换
- UTF-8到GBK转换
- UTF-8转换成GBK
- java批量将utf-8转化为gbk
- shell脚本将gbk文件转化为utf-8
- 字符gbk转换为utf-8的sublime插件
- sublime text2中gbk转换为utf-8
- oracle编码格式从utf-8转换为GBK
- oracle编码格式从utf-8转换为GBK
- oracle编码格式从utf-8转换为GBK
- Android studio中将gbk转换为utf-8编码
- [正能量系列]失业的程序员(三)
- php取出mysql数据库中所有数据
- java操作数据库的类——SqlHelper(读取properties配置文件)
- 细胞自动机(生命游戏)源码
- spring中scope作用域
- dedeCMS等类似系统将gbk版本转换为utf-8版本(gbk to utf-8)
- Android开发必看知识,不看后悔
- PHP 超全局变量
- 邮件轰炸机
- simple note
- 32/64位平台printf uint64的方法
- Unix系统管理员安全手册
- 页面印象性能的点(不时更新)
- java排列组合