关于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团队。
相关文章推荐
- 关于安装oracle11g时没有安装gbk简体中文出现的EM按钮是乱码问题
- thinkphp 关于iis上面中文参数乱码问题
- 关于Androdi中SQLITE 3采用GBK编码存储,数据库中文乱码问题。
- 关于hive中decode函数,默认转码没有GBK中文字符集的问题
- 关于中文乱码问题的一些解决方案和经验
- 关于Navicat和MYSQL字符集不统一出现的中文乱码问题
- 这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享!
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题
- JSP关于request.getParameter("");中文乱码问题
- 关于jsp与sql server 2000的中文乱码问题
- 关于servlet中文乱码问题如何解决
- [原创]java WEB学习笔记17:关于中文乱码的问题 和 tomcat在eclipse中起动成功,主页却打不开
- 关于 HttpURLConnection POST请求 上传 以及中文乱码问题
- 关于Visual C++ 2008中wprintf和wprintf_s输出中文乱码问题
- 关于alert()中出现中文乱码问题
- ThinkPHP3.2 --- 中文乱码问题
- php ajax 中文乱码问题解决办法(接收发送)utf-8 GBK GB2312
- 关于使用中文分词工具ICTCLAS2013 Java版本乱码的问题
- 解决中文字符乱码问题,如何将gbk格式转换utf-8格式
- Javascript与ASP.NET(一般处理程序)关于URL(get方式)传递中文乱码问题的解决方案