欢迎来到天天文库
浏览记录
ID:3908038
大小:349.08 KB
页数:4页
时间:2017-11-25
《php中文乱码解决总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、关于PHP和MySQL出现乱码的解决办法最近几天一直在做贴吧的小项目,跟着十八老师的视频学着,中间也遇到不少问题,我查了不少资料最后都一一解决了。下面详细分类说明各种乱码的处理方法。简单地讲乱码的产生和各个环节里面设置的编码类型不匹配有关,这里的乱码主要都是指的中文显示的乱码。(下面没有特指都是说中文显示乱码)。我先根据发生乱码的位置来划分。如果是需要快速查找解决方法的可以直接根据错误位置来查阅本文(根据编号快速查找)。1.网页显示中文乱码。2.PHPmyadmin中显示乱码。3.控制台显示中文乱码。如果是想详细了解各
2、种情况的童鞋可以耐心阅读本文。1.第一种在一般网页页面上显示中文出现乱码。这个主要要改一下页面显示编码设置,如果是PHP文件,则在其中加上一句:header("Content-Type:text/html;charset=utf-8");并且要注意保存PHP文件的时候选择编码为utf8.如图所示在你需要显示的PHP后缀的页面中加上就可以,当然一般来说如果是比较多页面都要设置,一个个去添加很麻烦,就在初始化文件里面最后添加就可以加载到所有需要的文件了。如果是静态页面(求别喷,很可能有静态页面的说),在页面
3、head>标签之间加上一句:。改完后页面的显示中文就能正常。Utf8编码格式和gbk格式都是目前中文网站显示所用的编码,所以将charset改为utf即可。2.第二种在MySQL图形化界面中文数据的显示。在如PHPmyadmin里面也有可能出现中文乱码。前面也说了要把PHP文件编码保存为utf8,所以相对应的MySQL的相关字符集的设置也要改成utf8;这里有几种方式可以供选择。第一种治标不治本。在需要进行数据库操作的PHP文件里,加上下面几句:mysql_query('set
4、character_set_client=utf8');//设置client的字符集为utf8mysql_query('setcharacter_set_connection=GBK');//s设置连接字符集为gbkmysql_query('setcharacter_set_results=utf8');//设置最后结果的字符集为utf8当然作为程序员来说,如果一个添加留言的页面需要录入中文,一个修改留言的页面也需要中文的录入数据库,每个文件里都必须加,一个个写也是很烦躁的事,建议还是写到初始化文件(比如我写的init
5、.php)里面,其他文件都会自行加载。至于为何说这是治标不治本的呢?这是由于每次都先执行一次这种操作,如果没有这些代码,则还是会出现中文乱码。还有没有更好的办法呢?既然我们能把这些修改的命令写到整个项目里的初始化文件里面,那我们能不能直接改MySQL的配置文件呢?这样每一个用MysQL的PHP项目都可以解决在图形化界面里中文的显示。这就是第二种指标也治本的方法:改MySQL配置文件。先找到MySQL配置文件my.ini修改的部分之后如下[mysql]里面改为:default-character-set=utf8[mys
6、qld]中改为:default-character-server=utf8[client]中改为:default-character-set=utf8修改之后保存,重启MySQL。鉴于很多新手朋友,重启MySQL的方法也附上:在运行cmd后,输入如下图所示的命令行注意netstop之后加的是mysql的名字,也许有人觉得我在说废话,但是要知道也许有些同学用的是PHPnow的继承包,里面的mysql不是这个名字,而是mysql_pn,不排除有人安装了好几个mysql,注意修改的是哪个mysql的配置文件就重启那个相应的m
7、ysql服务。基本上这样来看就应该可以完全解决在图形界面上乱码的问题了,但是我们可能还遗漏了一个方面,这就是第三种乱码出现的位置:3.第三种:乱码出现在命令控制台。我们可以用showvariableslike‘charac%’;查看MySQL的字符集的所有设置,如下图所示则为可以正确显示中文数据记录:MySQL很多默认值是latin,如果你还不是和我上图一样的设置,请参看第二种情况的处理方法,处理好后继续读下面的部分。理论上讲,做好上面几种情况的处理就可以保证无乱码。但实际上除了PHP文件的编码和MySQL的字符集要高
8、度一致以外,还有windows的用户不得不面对的问题,就是在控制台下查看MySQL里面的中文数据还是可能出现乱码。最后的解决方法是:在选好数据库之后,先执行下面的语句:setnamesgbk;运行结果如下:在执行前再次设置表单的字符集,这样就能在控制台正确显示中文记录了。
此文档下载收益归作者所有