你的php网页乱码了吗-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

你的php网页乱码了吗

简介:

一、

学习php的童鞋在编写网页的时候,要是设计到中文内容的储存的时候,大多会出现一个问题就是乱码。一般乱码的话,我们可以检查三个方面

    (1)网页编码是否正确,比如是否在头部那里加入原标签

 

1
<meta charset="UTF-8">

    (2)检查mysql数据库储存时默认使用的字符集

    (3)检查网页文件的编码,是否为对应的中文编码


------------------

环境:win7+wamp2.2

------------------

二、

下面我们就第二点开始,mysq数据库使用的编码字符集

(1)打开mysql终端,查看当前的设置,确定要修改的范围

1
show variables like 'char%';

(2)根据结果进行分析,

1、如果你显示的结果和我的差不多,即(只有character_set_system编码为utf8)那么清跟随下面的脚步一步步来


wKiom1SUGPahG-8JAAEO0mQ_5j8071.jpg


2、打开my.ini文件,搜索关键词'mysqld',找到之后,观察是否有这一行

character_set_server = utf8

倘若没有的话,则应该像我这样在其下面添加一句

wKioL1SUGZuhB4eRAAAz_lFifO0441.jpg

3、再次搜索关键词'client',观察是否有这一行

default_character_set = utf8

没有的话在[client]下面添加上

wKiom1SUGPbC9pO0AAB29ywHy3g701.jpg

4、保存,重启mysql服务,关闭mysql终端(不然看到的客户端编码不会更新)

5、再次打开终端,我们再次输入

1
show variables like 'char%';

倘若出现下面的结果,即mysql数据设置成功

wKioL1SUGZvzoP_FAAF_bI0qrXk834.jpg

三、

网页文件编码这个问题最容易被忽略,这个是在保存的时候,选择保存文件编码的格式时设置的。

解决办法:

1、使用notepad++打开该网页文件,然后在“格式”--“转为UTF-8无BOM编码格式”

wKiom1SUGPnhJ27NAAI6wLcIBJ8667.jpg

2、保存一下就好了


问题分析:

1、我在编写php的时候已经使用过

1
<span style="font-size:18px;"><?php mysql_query('set names utf8'); ?><br></span>

但是还是出现乱码问题!


分析:使用上面语句,修改的只是三项,这三项分别为

character_set_client

character_set_connection

character_set_results

而且这种修改只是临时性的,关闭终端后又和原来一样

图片说明:

wKiom1SUGPmDFhUpAAJd07ezvvo725.jpg


2、我们对于第三个乱码问题进行分析一下

(1)使用sublime text3编辑打开php文件。可以看到左下角有编码的信息,可以看到,目前的编码为gb2312

wKiom1SUGxawUc_dAAAXFNr56Vk531.jpg

(2)当网页加载的时候,那时也就相当于打开一个文件,那时读取的格式时按照gb2312的编码来读取网页文件,而在用户浏览器显示时,因为网页声明了字符集为utf-8,所以会将得到文件按utf-8字符集来解释内容,这是就会出现乱码了,而我们那些从数据库读取出来的内容却没有问题

网页编码

wKiom1SUGPfCSu2SAAC1NZc-EBw694.jpg

原来的gbk编码的文件

wKioL1SUGZuwuHs4AACst5CUsbY965.jpg

后来utf-8编码的文件

wKioL1SUGZ2RWRhoAACe-vn47dk899.jpg

(3)注意一点,sublime text3 的转换编码的时候不太给你,虽然显示转换成功,可是呢?显示还是依旧,还是我们的notepad++给力一点,怎么修改前面有!转换成功之后

wKioL1SUGZ3CuWL9AAASZHFzBTs218.jpg


3、为什么我按照你所说的修改了,在mysql终端下显示,还是乱码呢?

分析:

(1)我们先来看看windows下的cmd的使用的字符集是什么?

wKioL1SUGZ7AQzA_AAC-YpUayIY537.jpg

可以看到,cmd的字符集是gbk,也就是说任何在终端显示的内容会以对应gbk这个字符集,但是我们数据库的中文设置的utf8这个字符集,当我们要显示时,自然会以utf8编码的读取数据库数据,那时编码为utf-8,一到终端就乱套了


(2)那该怎么查看呢?

使用phpmyadmin就好了打,当然得设置我们使用的utf-8编码!










本文转自 qq414207614 51CTO博客,原文链接:http://blog.51cto.com/skytina/1591864,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: