PHP+MYSQL出现乱码的解决方法

来源:互联网 发布:科比对阵马刺队数据 编辑:程序博客网 时间:2024/04/30 21:33

最近开发php网站,遇到非常奇怪的问题。

我用SESSION先存储了用户登录信息,然后在另外页面读取SESSION值。在本地测试完全没有问题,一切良好。但是上传到服务器后,发现居然读取不到SESSION值。于是我以为可能是需要在页面顶部已启动SESSION就立即取回SESSION值到变量,修改后好像还是没有解决问题。再次检查,发现一输入或输出中文内容就出现乱码,而且同时SESSION取不到值,因为SESSION是在处理数据库后设置的,所以估计可能是数据库有问题。仔细查看数据库,发现数据库的编码是GBK,而我的页面使用UTF-8编码。于是修改数据库编码为UTF8-UNICODE-CI。然后再在连接数据库的PHP代码后加上:


mysql_query("SET NAMES 'UTF8'"); mysql_query("SET CHARACTER SET UTF8"); mysql_query("SET CHARACTER_SET_RESULTS=UTF8'"); 

测试通过!


本以为大功告成,没想到后来在插入一条有韩文的记录时又不行了。打开数据库,查看数据库各个表字段结构,发现各个字段的整理字符集依然是GBK!居然没有改过来,于是把所有表所有字段全部修改成UTF8-UNICODE-CI整理。


重新插入韩文测试,这次终于成功了!


看来编码问题一定要小心,不同的服务器设置不同,一定要调整一致,而且数据库编码、乃至各个表各个字段的整理编码、代码编码、网页编码一定要三者完全统一编码,才能避免这种问题。

0 0
原创粉丝点击