这段时间一直在弄百蔬网的wap端和APP端的程序,发现两个相关开源代码,ecmobile和ectouch,这两个代码都要求时utf-8编码,而我的网站是gbk编码的,于是决定干脆来一个彻底的,全站ecshop有gbk转码为utf8。虽然一直知道怎么去弄,但是还是担心会出现一些问题,一直不想碰哪些问题,所以拖延至今。在这里想说的是,虽然ecshop编码是gbk,但是使用utf8编码的ectouch是没有问题的。
ecshop网站的转码就是文件系统和数据系统的转码。数据库的转码按照前人的方法,用帝国备份来进行。在这里提醒一下,帝国备份王存在万能伪造cookies登录漏洞,无需任何账号密码即可登录后台,相当危险,建议使用完之后马上删除。
转码的话,在“备份数据”-选择数据库-备份数据-在数据编码”这里选择utf-8编码,这样备份的数据库就都是utf-8的文件了。
但是在这里按照网上前辈们的方法,他这个表的“编码”还是显示为“gbk_general_ci”。帝国备份王备份的数据放在bdata文件夹,打开它的这个数据库备份文件,虽然文件编码已经是utf-8了,但是他这个默认字符集还是gbk,如下:ENGLINE=MyISAM AUTO_INCREMENT=559 CHARSET=GBK
把这个gbk统统替换为utf8,在这里要提醒下,一定是utf8,不能写成utf-8的形式,不然就出错了,无法还原。
通过帝国备份王还原之后,系统就完全成为utf编码的了。
ecshop文件系统的转码可以使用网上的工具,51ecshop编写的模板转码专用工具就相当不错,选择从gbk转码为utf就好了,他不仅把文件的编码转为utf8还将文件中的CHARSET=GBK也转为CHARSET=utf8.
在网站清理了一下缓存,网站前台就正常了。
上线几个小时后,同事给我反映无法购物,当准备提交订单的时候,总是提示“没有选择配送区域”或者提示“没有填写收货人电话”,后台的收货人邮件不显示等等。
由于最近修改了很多地方,刚刚开始还以为是修改代码出了问题,翻了相关代码之后没有发现异常。后来追查弹出错误的文件是在shopping_flow.js中来判断的,因为没有动过这个文件,代码本事应当没问题,一看编码还是gbk,转码为utf8后就问题解决了。
目前为止,一切正常。