ljj17173

MySQL乱码问题的解决方法
说实话MySQL数据库写入中文本来不应该是什么难事,但是,这次遇到的乱码问题,不知道根本原因真的是无法解决。刚开始...
扫描右侧二维码阅读全文
28
2018/09

MySQL乱码问题的解决方法

说实话MySQL数据库写入中文本来不应该是什么难事,但是,这次遇到的乱码问题,不知道根本原因真的是无法解决。

刚开始学习PHP网页的表单提交至数据库,用mysqli函数进行数据库的访问和上传,结果一开始就出问题,就是输入的数据如果是中文就会乱码,马上意识到可能是编码问题,果断百度一下,网上的方法都试了一遍,最后还是无果,再断断续续百度,实验了3天之后问题终于得到了解决。

一、首先就是检查MYsql服务的默认字符集

在Mysql命令行中输入:

show variables like 'character%';

如果显示的是

mysql> 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文档中添加一行

character-set-server=utf8

来修改默认字符集,保存重启即可
在次输入命令显示的如下则正确

mysql> 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

在这我用可视化的工具来链接数据库来进行检查了
未命名图片.png

数据库本身也需要设置成UTF8

三、数据库表中,数据的格式也要修改成UTF8

未命名图片2.png

完成上述设置后,理论上数据库是不会出现乱码的问题了
但是如果,还有问题,那么继续往下设置

四、检查PHP网页的编码格式是否是UTF8

如果网页文件编码格式不是UTF8也会造成MySQL的乱码问题
解决方法是在网页的<html>标签中加入

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″> 

以保证网页编码是UTF8 的格式

五、PHP代码格式

在PHP代码中添加代码:

header(”Content-type: text/html;charset=utf-8″);

这一行确保PHP代码为UTF8的格式

六、在PHP访问数据库的代码中加入数据库字符集utf8执行代码

mysql_query(”set names utf8;”); 

所引用的来源:
https://jingyan.baidu.com/article/77b8dc7fcae06e6174eab6ba.html
https://www.cnblogs.com/fantiantian/p/3468454.html

Last modification:January 24th, 2019 at 10:40 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment