php乱码问题一直是困扰初学者的一个很大问题。这里我分享一下我的解决方案,至少对我来说,用了这种方法之后就没出现过乱码问题了。
首先我们要搞清楚如下几个编码的概念:
①文件编码:每新建一个文件都会有对应的一个编码,把文件另存为就可以查看它的编码类型了。

②页面编码,也就是浏览器以什么编码来显示你的网页,打开这个网页,鼠标右击就可以查看它的编码类型了。
③数据库编码。这里不是指建数据库时设置的编码,而是说指你的程序要连接数据库时,设置你读取数据的编码,通常这样设置mysql_query("set names GBK")或者mysql_query("set names gb2312")或者mysql_query("set names utf8")注意是utf8不是utf-8。
我们搞清了以上几个概念就好办了,使编码统一就可以解决乱码的问题了。
①在没有连接数据库的情况下,使页面编码跟文件编码统一就可以防止出现乱码了。上面说了,文件编码可以另存为查看,那页面编码怎么设置呢?如果用php语句就是在最前面加上header("Content-type=text/html;charset=文件编码");注意使用header()函数前不能有任何HTML输出。如果用HTML语法呢就是在<head></head>标记间加上<meta http-equiv="Content-Type" Content="text/html;charset=文件编码" />。
小提示:文件编码为GBK,ANSI,gb2312,页面编码都可以设置为gb2312即header("Content-type=text/html;charset=gb2312");
文件编码为utf-8时,页面编码就设置为utf-8,不过要注意utf-8的两种模式,这里有解决方案:http://www.googlephp.cn/archives/21。
②在有连接数据库的情况下,使三者的编码统一就可以了。
文件编码跟页面编码是GBK,ANSI,gb2312情况下,在连接数据库后加上mysql_query("set names gb2312")或者mysql_query("set names GBK");
文件编码跟页面编码是utf-8时,在连接数据库后加上mysql_query("set names utf8"),注意后面那个utf8是没有“-”的。
有任何问题欢迎留言指出。
« 上一篇:帝国CMS导入模板的教程(注意编码) php安装程序的基本原理:下一篇 »
发表于 2010年03月5日 2:15 下午
学习中……讨教……
[回复]
发表于 2010年03月27日 12:59 下午
好好学习,天天向上~嗯~
[回复]
发表于 2010年03月27日 1:13 下午
数据库有大学问啊~
[回复]
发表于 2010年03月30日 4:20 下午
有意转载博主这篇文章,请问是否允许,盼回复 谢谢
[回复]
陈勇文 回复:
四月 14th, 2010 at 12:45 下午
可以。
[回复]
发表于 2010年06月6日 4:29 下午
数据库有大学问
[回复]
发表于 2010年06月29日 11:03 上午
顶
[回复]
发表于 2010年08月4日 11:18 下午
太过专业,没弄明白~~~~~~~~~``
[回复]
发表于 2010年09月5日 5:15 下午
WP的数据库乱码的话,好像把WP配置文件中的那个utf8改成utf-8才行——别问我原因,我不知道的!我只知道这么做后可以了而已!
[回复]