失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php查询mysql数据库乱码_PHP怎样处理查询MySQL数据库中文乱码?_后端开发

php查询mysql数据库乱码_PHP怎样处理查询MySQL数据库中文乱码?_后端开发

时间:2021-10-29 05:59:20

相关推荐

php查询mysql数据库乱码_PHP怎样处理查询MySQL数据库中文乱码?_后端开发

PHP如何处理查询MySQL数据库中文乱码?

1、将MySQL数据库默许的编码是UTF-8;

2、在MySQL中建立表时,将字符集设置为UTF-8;

3、在PHP中查询数据之前,将数据库编码设置为UTF-8即可。

MySQL的“SET NAMES x”字符集问题剖析

最近接收BBT的培训,做一个投票体系。体系代码倒不是很难,然则我的时候重要消费在了研讨字符集和编码上面。MySQL和Apache两个体系的编码(字符集)问题让我费力头脑,吃尽苦头。网上对这些问题的处理比较零星,比较单方面,大部分是供应处理方法,却不说为何。因而我将这几天收成总结一下,防止后来者再走弯路。这篇文章对PHP编写有一点协助(看完你就晓得,如何让你的PHP程序在大部分空间供应商的服务器里显现一般),然则更多协助在于网络服务器的架设和设置。

先说MySQL的字符集问题。Windows下可经由历程修正my.ini内的

# CLIENT SECTION

[mysql]

default-character-set=utf8

# SERVER SECTION

[mysqld]

default-character-set=utf8

这两个字段来变动数据库的默许字符集。第一个是客户端默许的字符集,第二个是服务器端默许的字符集。假定我们把两个都设为utf8,然后在MySQL Command Line Client内里输入“show variebles like “character_set_%”;”,可看到以下字符:

character_set_client latin1

character_set_connection latin1

character_set_database utf8

character_set_results latin1

character_set_server utf8

character_set_system utf8

个中的utf8跟着我们上面的设置而修改。此时,假如我们经由历程采纳UTF-8的PHP程序从数据库里读取数据,很有多是一串“?????” 或者是其他乱码。网上查了半天,处理办法却是简朴,在衔接数据库以后,读取数据之前,先实行一项查询“SET NAMES UTF8”,即在PHP里为

mysql_query("SET NAMES UTF8");

即可显现一般(只需数据库里信息的字符一般)。为何会如许?这句查询“SET NAMES UTF8”究竟是什么作用?

到MySQL命令行输入“SET NAMES UTF8;”,然后实行“show variebles like “character_set_%”;”,发明本来为latin1的那些变量“character_set_client”、“character_set_connection”、“character_set_results”的值悉数变成utf8了,本来是这3个变量在作怪。查阅手册,上面那句即是:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

看看这3个变量的作用:

信息输入途径:client→connection→server;

信息输出途径:server→connection→results。

换句话说,每一个途径要经由3次转变字符集编码。以涌现乱码的输出为例,server里utf8的数据,传入connection转为latin1,传入results转为latin1,utf-8页面又把results转过来。假如两种字符集不兼容,比方latin1和utf8,转化历程就为不可逆的,破坏性的。所以就转不回来了。

但这里要声明一点,“SET NAMES UTF8”作用只是暂时的,MySQL重启后就恢复默许了。

接下来就说到MySQL在服务器上的设置问题了。岂不是我们每次对数据库读写都得加上“SET NAMES UTF8”,以保证数据传输的编码一致?能不能经由历程设置MySQL来到达那三个变量默许就为我们要想的字符集?手册上没说,我在网上也没找到答案。所以,从服务器设置的角度而言,是没办法省略掉那行代码的。

引荐教程:《PHP》《MySQL教程》

以上就是PHP如何处理查询MySQL数据库中文乱码?的细致内容,更多请关注ki4网别的相干文章!

收藏 | 0

如果觉得《php查询mysql数据库乱码_PHP怎样处理查询MySQL数据库中文乱码?_后端开发》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。