说实话MySQL数据库写入中文本来不应该是什么难事,但是,这次遇到的乱码问题,不知道根本原因真的是无法解决。
刚开始学习PHP网页的表单提交至数据库,用mysqli函数进行数据库的访问和上传,结果一开始就出问题,就是输入的数据如果是中文就会乱码,马上意识到可能是编码问题,果断百度一下,网上的方法都试了一遍,最后还是无果,再断断续续百度,实验了3天之后问题终于得到了解决。
一、首先就是检查MYsql服务的默认字符集
在Mysql命令行中输入:1
show variables like 'character%';
如果显示的是1
2
3
4
5
6
7
8
9
10
11
12
13mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
那么可以看到,服务和数据库字符集默认是latin1的这是不对的,我们需要使用UTF8
所以在/etc/my.cnf文档中添加一行1
character-set-server=utf8
来修改默认字符集,保存重启即可
在次输入命令显示的如下则正确1
2
3
4
5
6
7
8
9
10
11
12
13 show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
二、检查建立的数据库是否为UTF8
在这我用可视化的工具来链接数据库来进行检查了
数据库本身也需要设置成UTF8
三、数据库表中,数据的格式也要修改成UTF8
完成上述设置后,理论上数据库是不会出现乱码的问题了
但是如果,还有问题,那么继续往下设置
四、检查PHP网页的编码格式是否是UTF8
如果网页文件编码格式不是UTF8也会造成MySQL的乱码问题
解决方法是在网页的标签中加入1
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
以保证网页编码是UTF8 的格式
五、PHP代码格式
在PHP代码中添加代码:1
header(”Content-type: text/html;charset=utf-8″);
这一行确保PHP代码为UTF8的格式
六、在PHP访问数据库的代码中加入数据库字符集utf8执行代码
1 | mysql_query(”set names utf8;”); |
所引用的来源:
https://jingyan.baidu.com/article/77b8dc7fcae06e6174eab6ba.html
https://www.cnblogs.com/fantiantian/p/3468454.html