mysql乱码问题


mysql乱码问题

出现乱码的原因:因为当前的CMD客户端窗口与数据库本身及库,表的编码格式不一致导致的。所以当出现乱码的时候,请排查:

* sql文件的编码格式
* 当前CMD客户端窗口的编码格式
* 数据库服务本身的编码格式
* 数据库的编码格式
* 表结构的编码格式

我一在次更新客户环境中出现了,mysql命令source文件后,出现乱码的情况。但是使用navicat执行sql确没有问题。

这是命令行中查看字符编码得到结果:

这是我使用navicat查看字符编码得到的结果:

从上图中可以看到MYSQL有六处使用了字符集,分别为:
与服务器端相关:database、server、system(永远无法修改,就是utf-8);

database 为数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置
server 为服务器安装时指定的默认字符集设定
system 为数据库系统使用的字符集设定

与客户端相关:connection、client、results :

client 为客户端使用的字符集
connection 为连接数据库的字符集调协类型,如果程序没有指明连接数据库使用的字符集类型则按照服务器端默认的字符集设置
results 为数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。

通过上图和解释,可以得出,只要客户端与服务端的编码格式不一致就会导致筹码问题。只不过我这里只是这个问题,还有如表,数据库,sql文件的字符编码不一致,都会导致乱码。

解决方法

一、 在当前的CMD中修改字符集,只不过只能在当前会话生效:

mysql > set names utf8;

二、在连接数据库时就定义字符集编码:

~]# mysql -uxxx -pxxx -hxxxx --default-character-set=utf8

三、最有效的办法,就是在mysql服务器端修改mysql的配置文件,加入如下配置:

~]# cat /etc/my.cnf
[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
优质内容筛选与推荐>>
1、博客搬迁到新址
2、[SDOI2012]任务安排
3、iPhone上的JSON[转]
4、PHP面试 MySQL数据库基础
5、一个c++给程序打log的单例模式类


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号