首先,对论坛的管理人还有论坛某些冷眼旁观的人们表示遗憾。
昨天遇到了GBK和UTF8互转问题,查了不少资料都没理出头绪,发帖提问无人问津,给管理留言亦是杳无音信。
花费了几个小时,查了不少资料(其他论坛),经过N词失败之后终于转换成功,在这里分享给大家,希望能给有需要的同学们提供帮助。
废话不说了,下面是转换必要的几步,不一定适合所有人,所以希望大家在开始之前务必备份好数据。(数据库和模板资料)
GB2312转UTF8:
第一步:打开phpMyAdmin,将dedecms数据库全部导出(export>>save as file >>go)
第二步:用记事本打开第一步中导出的文件,将其中的的GB2312全部替换成utf8,然后另存,另存时候编码选utf-8。
第三步:安装UTF8编码的dedecms程序
第四步:打开phpMyAdmin,将新安装的utf8版本的数据库中数据清空(Structure>>select all>>go)
第五步:导入,选择刚才第二步另存的数据库文件。(Import>>go)
到此为止,数据转换并导入成功。
///////////////////////////////
souroot注:
数据库转为UTF-8后,还有三件事:
1)PHP对数据库操作前都加上 mysqli_query($conn,"set names utf8"), 这样做是为了在传输,返回结果等都是用的utf-8编码;
如果mysqli_query($conn,"set names gb2312"), 后台会在操作数据库时,比如读完数据库的数据,先转成GB2312再传给客户端;或者拿到GB2312的数据后,专为数据库的编码(这里是UTF-8),再保存到数据库;
2)网页上注明使用的是UTF-8编码
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3)对于有输出html文字的php文件,文件本身要专为UTF8格式编码(最好是无BOM格式,不然PHP认为BOM格式本身已经算输出了,这个会影响session start);