这个问题是我之前有遇到过问题之一。
具体表现为:通常由浏览器页面提交的数据再经过服务器处理后,插入数据库时。显示的数据为乱码。
这种情况可以这样排查:
一.检查数据库的各个编码字符集是否一致。 启动mysql 输入显示字符集 :mysql> show variables like '%char%'
基本这几个字符要一致。因为WAMP的集成环境是由法国人开发的一款Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。所以默认的编码字符集是lanti【适用于西欧语种】。
所以改变字符集就是当下要解决的问题,大概是分为两种:一种是直接在在mysql的管理界面输入改变编码的命令。【这种方法不太灵】
一种是直接修改mysql.ini 文件:【个人的方法】
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set=utf8
[mysqld]
port=3306
character-set-server=utf8
然后再次用命令 mysql> show variables like '%char%'; 查看是否成功
二.如果发现通过一方法后。后还是没有解决问题。那么检查 database 中表的字符集是否为你要设置的字符集。有可能你建表的时候 表的字符集还是 lanti。所以修改表的字符集。
三 如果通过一和二的的方法没有问题解决问题。 那么就检查编写项目的IDE的设置的编写字符集是否为你要的那个字符集。 有的时候IDE的字符集默认的一般是unicode。
四 如果 前三个条件都达成了。还是没有解决问题。 那么 还有最后的方法排除 。 一种是在html 的代码中 用 <meta http-equiv= "content-type" content=“text/html;character-se=: utf-8”> 告诉浏览器 使用 utf8 编码 。 一种是直接在php 代码前面 加一行 header("content-type:text/html; charset=utf8") 告诉 浏览器字符集编码
五 基本这些解决了,问题就好了