Mysql之命令行中文乱码解决方案

前言

最近用命令行在操作mysql,又发生了乱码的情况,之前出现乱码都是网上找解决方法,过后又忘了,也不知道为什么要这么解决,今天觉得把这个乱码问题给彻底解决掉,免得以后乱码又到处找解决方案。

分析

中文无法正常显示(或乱码,或???,或不显示),多半就是编码不对或编码不一致,哪些地方的编码要保持一致呢?
show variables like ‘char%’;//查看数据库的编码格式
因为这里是在windows下的命令行操作的,首先就是cmd命令行窗口的相关编码,这里必须是gbk才能正常显示中文。如果不是gbk,就会出现下图的乱码情况:

这里写图片描述

解决方案一

如果要改变命令行编码,可以通过在命令行输入
set names gbk;//将character_set_client、character_set_connection、character_set_results一次性都改为gbk;

当然也可以分别设置,通过MySQL命令行修改:(编码可选)
mysql> set character_set_client=gbk;
mysql> set character_set_connection=gbk;
mysql> set character_set_results=gbk;

前面两个是连接的编码设置,包括对数据的写入也是用上面两个,最后一个是显示的编码。此处是在命令行中操作,则必须全部改为gbk。

设置完成后,再次输入show variables like ‘char%’;//查看数据库的编码格式
如下图所示,此时就可以正常显示中文了。

这里写图片描述

解决方案三

然尔,有时候,像上面这样设置却还是无法正常显示中文,这时可以尝试下面的方法。在命令行输入:
set character_set_server = gbk;//将character_set_server由utf8设置为gbk
即让客户端编码(在这里即是命令行窗口的编码,character_set_server)和数据库中的
character_set_client
character_set_connection
character_set_results
这三个编码一致,这样就不会出现乱码了,如下图所示:

这里写图片描述

在配置文件my.ini中修改character_set_server为utf8

有些人这里的character_set_server可能不是utf8,这是因为如果在安装MySQL数据库的时候不小心选择了默认的 latin1,则此时的character_set_server 编码方式就是latin1,这样也会导致乱码的。如果想要修改的话,可以到mysql.ini文件中在[client]下加上下面这句:
default_character_set=utf8
同时在[mysqld]中加上下面两句:
character_set_server=utf8
collation_server=utf8_general_ci
之所以改成 utf8,是因为在大多数地方使用utf8的编码格式就能正常显示中文,此处因为是在命令行中执行是个另外(要求编码格式为gbk),而我们在实际运用中,基本都是借助其他图形化管理工具来操作数据库的,很少单纯用命令行的,所有还是跟随大众将默认编码设为utf8吧。注意:修改配置文件的编码格式后,一定要重启mysql服务。如果不是通my.ini配置文件设置的内容,只在当前状态下有效,当重启数据库服务后失效。

另一种乱码情况:命令行插入的数据乱码,原数据不乱码

有些人还会出现部分乱码或者部分不显示中文的情况,这是因为你在插入数据之前,没有把编码方式修改为gbk,而是在插入之后才修改编码方式,所以插入的数据就以默认的编码格式存储了,这时命令行就识别不了,命令行只识别gbk的编码,所以插入的就是乱码的或者不显示的,而如果你之前数据库里有数据的话,这部分数据就是正常显示的。

总结

遇到问题不要轻易放过,只能把自己踩过的坑填上,才能避免下次再次入坑。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值