PHP显示MySQL数据乱码,字符集设置都是UTF8,数据库也是UTF8,一直找不到问题在哪里,代码见详细,求大神

PHP显示MySQL数据乱码,字符集设置都是UTF8,数据库也是UTF8,一直找不到问题在哪里,代码见详细,求大神,第1张

php+mysql的utf-8中文乱码问题的解决方法

问题汇总:

1mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码

2MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码

3MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码

4用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码

5如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码

6PHP页面字符集不正确

7PHP连接MYSQL数据库语句指定的编码不正确

使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难了

针对不同问题的解决方法:

1mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码

修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin 执行如下命令:

Alter DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

以上命令就是将test数据库的编码设为utf8

2MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码

修改表的编码:

Alter TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

以上命令就是将一个表category的编码改为utf8

3MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码

修改字段的编码:

Alter TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

以上命令就是将test表中 dd的字段编码改为utf8

4用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码

如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可

5如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码

这种情况也是修改页面charset即可

6PHP页面字符集不正确

为了避免PHP页面乱码的发生,PHP页面开始第一句

header("content-type:text/html; charset=utf-8");

//强行指定页面的编码,以避免乱码

7PHP连接MYSQL数据库语句指定的编码不正确

在连接数据库的语句中

mysql_connect('localhost','user','password');

mysql_select_db('my_db');

mysql_query("set names 'utf8'"); //select 数据库之后加多这一句

按以下步骤检查处理。

(1)HTML编码指定是否正确?检查<head>段中是否包含以下

<meta

>

<php  

echo '<p><img src="centergoodsphpaction=show&id='$val['id']'&t='time()'" width="150"></p>';  

        header('content-type:'$b['type']); 

echo $b['pic'];

以上代码在header发送之前有个echo输出了一串字符串有些header信息要求先发送,之前不能有其他输出你将header这句放在echo输出之前

另外,在上面一段代码中,你将上传的数据直接保存到数据库中,然后在下面取出来直接发送给浏览器,这是什么逻辑你发送出去的将是的原始数据,浏览器就是按原样显示,一堆乱码如果你要让它知道这是一张,你也得使用header来标识这是类型的文件当然最后是一个单独的php文件处理并输出格式的数据供<img>调用

将浏览器中的编码改成utf-8,数据库中也是。在php页面首行加上header("Content-type:

text/html;

charset=utf-8");,必须首行,前面不能有输出。

还有,在查询数据库时加上:mysql_query(set

names

utf-8);

数据载入的时候是乱码还是正常,是从别人机器上导出数据自己恢复的吗?

查看下数据库的字符集编码,show

vaiables

like

'%char%'

查看下字符集

使用下latin1

因为他是默认的

,不行就把数据库删了重新建立在导入数据

以上就是关于PHP显示MySQL数据乱码,字符集设置都是UTF8,数据库也是UTF8,一直找不到问题在哪里,代码见详细,求大神全部的内容,包括:PHP显示MySQL数据乱码,字符集设置都是UTF8,数据库也是UTF8,一直找不到问题在哪里,代码见详细,求大神、有关PHP 数据库乱码的问题、php从数据库读取图片是乱码该怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9513007.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存