首 页  >>  E商学院  >>  zencart百科  >>  Zen Cart 乱码 请你走开 一

Zen Cart 乱码 请你走开 一

成天跟程序 源码打交道, 想想能有什么事会让你抓狂无比! 当你无端端的面对一片一片 貌若天书的 蝌蚪文时 想想看~~ 会有一种什么样的感觉!
一定满脑袋小星星了吧, 没错 这就是传说中的乱码~ 说起乱码 首先我们得明白什么是文件的编码; 这里要详细把这事儿说明白了 估计 可以出本儿书了 这里简要引用
一段 百科介绍里的说法



计算机中的信息包括数据信息和控制信息,数据信息又可分为数值和非数值信息。非数值信息和控制信息包括了字母、各种控制符号、图形符号等,它们都以二进制编码方式存入计算机并得以处理,这种对字母和符号进行编码的二进制代码称为字符代码(Character
Code)。计算机中常用的字符编码有ASCII码(美国标准信息交换码)和EBCDIC码(扩展的BCD交换码)


有闲心 可以在百科里 稍为的对这个概念了解掌握一下 (技多不压身吗)
http://baike.baidu.com/view/1204863.htm


So ' 上面啰嗦这么多 貌似都太大道理了 下面我们进入正题 在 Zen cart 应用中 经常会碰上乱码问题的困扰 造成 Zen cart 乱码的原因
经过我个人接触 Zen Cart 这么久以来 基本上 总结出 有下列这几种原因所至 下面 就一一列出 针对不同原因导致的乱码问题的解决方法:


程序声明编码 与 程序文件编码不一至 所至


出现这种情况的大多数是使用了 英文源版的程序
而又安装了中文模板或模块或其他国家地区小语种语言文件模板模块所至


英文源版程序 默认头部的声明编码格式为 ISO 8859-1
这是一种涵盖西欧大多国家地区语种语言字符的区域性编码


他的另外一种叫法 称之为 Latin-1 筒子们 这个叫法 很有必要记住 因为
以后我们或许会常用到他


而中文或其他小语种字符编码也有着自己对应的区域性编码 这些编码想要在国际上通用 哪就需要使用
UTF8编码格式


什么是 UTF8 编码 这里不赘述了 有兴趣可以参见本文最后给出的 科普 传送门


我们使用 Zen Cart 自然是要尽可能国际化 地域专属编码肯定不是首选, 所以一般我们使用
UTF8 编码,


So' 问题出来了, 当我们使用 UTF8编码的时候 这是一种国际化通用编码, 他兼容其他区域性编码
但其他区域性编码却不能兼容他,


也就是说 程序虽然是 Latin-1 编码 但当头部声明 UTF8 编码时 哪么一切显示都会很正常
而反过来 就不行了, 所以 就乱码了 , 知道了原因 哪就针对的去解决吧 !


对于因这种原因导致的乱码 解决方案相对容易
我们只要把文件编码与程序声明编码保持一至或保持一个向下兼容就可以了


动手操家伙 开干吧 打开 includes/languages/english.php 文件


查找 CHARSET 这个词,


找到这段代码 define('CHARSET' , 'iso-8859-1'); iso-8859-1 替换成 UTF-8


OK 问题解决!


需要注意的一点是 当有多个语言同时启用的时候 需要在 includes/languages/下
将不同的语言文件 全部替换 为 UTF-8


这里是前台的修改 如果后台也有乱码 哪么 还需要将后台 语言文件也作对应的修改


后台对应的修改 在 你的管理目录/includes/languages/english.php 或
其他对应的语言文件中


Tips 三个很重要的小提示:


1. 不要用记事本 去编辑 UTF8编码的
PHP 文件
哪怕是简单的打开再关闭, 虽然对哪些以经去除了BOM信息的 文件来说 出错的机率较小, 但这不是一个好习惯.
很容易给你造成各种莫名其妙的小问题, 具体原因,可以度大娘哪问问谷大叔, 啥是 PHP文件中UTF8的BOM信息及为啥记事本不能处理这东西等之类的, 相信结果,
不会让你失望滴!


2. 保存文件时
请一定要注意看看保存文件对话框下面哪里的编码格式,
不要希里糊涂的 把本来是UTF8编码的文件保存成了 gbk或gb2312 编码.
什么,你哪没有, 只是显示出 ANSI 项, 好吧, 哪继续看后面的 科普传送门吧 ....


3. 当你按上面的方法修改了对应的语言文件时,乱码依然存在,
哪么在考虑到是否有因其他原因所至外,请先检查你修改的文件所对应的模板是否使用了 Zen Cart
的替代机制,
嗯~~~, 在我接触的很多童鞋中 貌似这样的马大哈不在少数!


PS: 本来打算一篇文章写完这个乱码的破事儿,
没曾想我这么能啰嗦, 貌似一篇文章说不完了, 好吧! 我败给我自己了, 今天先到这里, 其他的 待后续补上 !!! 在解决这个问题新的文字没有码好前,
先给出几个 常识性的 科普传送门


什么是 字符的编码:
http://baike.baidu.com/view/1204863.htm


ISO 8859-1 编码 及其 涵盖的语种字符:
http://baike.baidu.com/view/758577.htm


UTF8 编码:
http://baike.baidu.com/view/742823.htm


ANSI : http://baike.baidu.com/view/185282.htm


 


点击次数:1143  发布日期:2013-04-15  【打印此页】  【关闭