前几天,项目要求使用mysql数据库,通过网页读取数据库中的数据记录,往数据库中插入记录后,从页面读取时发现中文显示乱码,其他的字母数字等字符倒是正常显示,但中文无法正常显示。负责该项目开发的同事搞了很久也没搞好,让我帮忙搞搞。因为已经很久没弄过mysql了,那些命令及参数的用法那些早忘光了,不得已先求助于搜索引擎的帮助快速复习一下,先熟悉一下mysql的一些用法。明白了mysql的基本用法以后,咱们就开始分析这个故障。
项目中使用mysql数据库来保存数据,所有的数据都保存在项目的数据库中。首先确认故障现象,mysql数据库中已经保存了项目的数据,现在需要手工向数据库中插入一些记录,记录中包含了中文字段,数据库原来也存有中文字段的记录,在手工插入mysql数据库过程中,发现插入数据库没有问题,在mysql本地查询该记录也没有问题,但通过网页来读取显示mysql中的数据时,数据库中原有的数据正常显示,但读取新插入的记录时,中文显示乱码,mysql在本地查询该记录,显示也都正常,通过页面读取该记录时中文就成了乱码,请教了大名鼎鼎的“度娘”,大概明白了mysql的字符集设置的问题。(主要就是utf8,gbk,latina1,gb2312这几个)
先查看mysql字符集设置,执行以下命令:
mysql> show variables like '%char%';
得到了当前数据库的字符集设置。因为是使用utf8字符集来建立的数据库,那就全部改成utf8字符集来试下,能不能正常显示。执行以下命令:
mysql>mysql --default-character-set=utf8 -uroot -p*******;
进入数据库以后删除新插入的记录,再重新插入记录,页面读取新插入的记录是中文依然显示乱码,因为项目是本地通过命令行来插入数据的记录的,那我就把mysql的客户端字符集改为原来的字符集试试,中文还是显示乱码,我又试了保留原来的字符集,只把客户端字符集改为utf8字符集,结果中文还是显示乱码。郁闷,难道没法搞了么??
我再全部使用utf8字符集来连接数据库,这次就把客户端字符集改为gbk了,再试下,页面读取新插入记录,中文显示终于正常了。好了,收工吧~~~~太久没搞过mysql了,全部忘了,这次正好复习复习,再巩固下。。。。。。