MYSQL/PHP/XAJAX/PHPMYADMIN字符集问题梳理

来源:互联网 发布:意大利海关数据 编辑:程序博客网 时间:2024/05/16 19:23
 今天下午反复实验了一下午,虽然还没有完全总结好,不过先记一记.
先说经验:
1. xajax支持中文问题(0.2.5以上版本)
xajax默认使用uft-8字符集,不支持中文(奇怪,uft-8字符集应该支持中文), 解决办法主要有两种较为可行.
1) 修改 xajax.inc.php中的XAJAX_DEFAULT_CHAR_ENCODING,默认为uft-8,修改为gb2312.(经过测试修改成其他均无效).
2)不修改xajax.inc.php,而是在创建xajax对象时指定字符集.
 $xajax = new xajax('','xajax_','gb2312');
 另外xajaxResponse创建时也需要指定字符集
 $resp = new xajaxResponse('gb2312');
以上两种方法均可顺利解决.网上其他方法比较混乱,未予测试.

2. 在xajax中调用MYSQL中的数据显示
 1)根据反复试验,使用默认latin1字符集的MYSQL可以直接支持xajax输出,不需要做任何额外设置.而且用PHP脚本和命令提示符向表中插入数据时均无问题.唯一缺点是这样插入的中文在phpmyadmin下显示乱码,因为phpmyadmin用uft-8编码显示.(我想这对编程没有大的影响,因为phpmyadmin很少用来直接查看数据内容.用做表设计\维护等没有任何问题).
 2)也可以使用UFT-8,但是在xajax中要正常显示必须首先执行:
 mysql_query("SET CHARATER SET gb2312")
 此种情况下通过phpmyadmin插入的数据在phpmyadmin下可以显示.通过PHP脚本插入的数据无法正常显示,但是可以直接在xajax 中显示而不需要执行上面的脚本.

以上主要是总结的经验.研究中也有另外一点心得.
(不一定正确,目前还在总结中,请勿迷信)
不管mysql的表中如何设置字符集,通过PHP脚本向表中插入数据时,数据的编码仍然是默认的编码.如latin1,而不是根据字段的字符集类型存储.如表的某个字段设置了uft-8作为整理,但是用PHP插入数据时仍然以latin1编码插入.
我认为,表的数据格式只是数据在表中存储时所用的格式,度取时仍按存入时的编码. 至于PHPMYADMIN中显示乱吗,我看大可不必理会.

3、设计表时直接不要用gb2312,经过试验,这个字符集极不好用。

总之,设计表时按照默认的latin1方式兼容性就很好。
原创粉丝点击