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

 今天下午反复实验了一下午,虽然还没有完全总结好,不过先记一记.
先说经验:
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方式兼容性就很好。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值