您的位置:首页 > 编程语言 > PHP开发

关于thinkphp中文乱码的问题,新版的没有出GBK版,美中不足啊。

2012-07-19 15:13 507 查看

最近开发一个项目,用的是thinkphp框架,不过,数据库用的是sqlserver,没有办法,公司就是这么决定 的。开发过程中,中文编码问题实在让我头疼了好长时间。现在,把自己的经验写出来,希望给大家一些帮忙。

首先,我想说一下中文乱码产生的原因。如果你的项目中的中文在不涉及数据库的时候显示是正常的,而写入数据库或者是从数据库中读取中文数据的时候出现了乱码问题,那么,问题产生的原因是sqlserver中对中文的存储方式是采用的gbk或者是gb2312,这个是我们在安装的时候就默认了的(因为我们的操作系统文字是中文)。如果我们的项采用的编码不是gbk、gb2312,那么乱码的问题就会出现。相信,对于用php开发网站,我们很多时候用的是utf-8,这样编码不一致,自然就出现了中文的乱码。

  找到 问题出现的原因,那么解决的方法其实也很简单。

  1、所有写入数据库的中文全部转成gbk或者gb2312xo,thinkphp中有一个现成的函数:auto_charset,这是一个系统函数,任何地方可以调用(再次感谢thinkphp的贴心vps),这样就可以保证写入的中文不会到数据库里变成了乱码,也可以保证做查询操作的时候不会因为乱码问题导致
查询失败

2、从thinkphp读取的中文数据要想正常显示,也要先把数据库中的中文数据由gb2312或者gbk转成utf-8(当然也是用auto_charset),这样就会解决显示时候的乱码问题。

3、thinkphp还是没有出GBK版,美中不足啊

现在正打算开发一个网站,就来看看有没有新版本用(以前都是用2.0的)新版本虽然出了,但还是UTF-8,没有GBK版,美中不足啊。

虽然说UTF-8是国标,但UFT-8要比GBK多一个字节,可别小看了一个字节,在空间和数据库都不多的情况下,随着数据的增加,这可是个棘手问题。

对于国内网站面对国内访问者,GBK已经足够了,没必要使用UTF-8,虽然UTF8兼容性更好,但在必要的时候可以将GBK转为UTF8使用,这问题不大。

这么好的框架没出GBK版,真是可惜啊。

这次使用GBK编码开发的网站只能再学习其它框架了。

希望TP早日出GBK版,我一定会回头使用TP的,毕竟使用习惯TP了,很顺手,重要的是TP确实很好用。

永远支持TP团队。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息