cmd下的SQL中文乱码问题

cmd窗口的编码

Windows命令行cmd窗口的默认编码方式是GBK,有时候我们可能要改成utf-8,可以参考下面的指令。但是注意这个命令只对当前窗口有效,并不是永久性修改。所以新开一个窗口的话默认的还是GBK,还得再运行一遍这个命令。

# 编码方式改成utf-8
C:\WINDOWS\system32>chcp 65001
# 编码方式改成gbk
C:\WINDOWS\system32>chcp 936

你可以在命令行窗口上方菜单栏处“右键->属性”,查看当前的字符编码方式:

注意,下面我们还是保持cmd是默认的gbk编码,然后去改SQL的配置。因为cmd每次都得改编码很麻烦。我们只要让cmd和MySQL都能知道对方的编码是什么,就可以正确解码。不一定要大家都是gbk或者都是utf8.

上面就当给大家科普一下cmd命令行的编码方式。我们还是保持cmd的默认编码方式gbk!!!

MySQL相关的编码

1. SQL Server的编码

数据库和表格的编码方式我们一般都会选为utf-8,但是下载的MySQL的默认编码格式通常是latin1,导致我们如果我们没有手动指定为utf-8的话,新创建的数据库和表都会默认latin1编码。这每次都手动改很麻烦。所以我们要把SQL的整个编码都改成utf8.

解决方法

第一步:找到MySQL的安装目录下的my.ini,默认安装位置是这样的:

C:\Program Files (x86)\MySQL\MySQL Server 5.5\my.ini

第二步:用记事本打开my.ini文件:
在这里插入图片描述
找到上面这个地方,把原来的代码注释掉,然后默认的字符集改成utf8。这样以后新建数据库还是表格,默认的字符集都是utf8了,就不是latin1了。为什么不用gbk呢,而用utf8?因为gbk毕竟是给中国设计的,如果你要分享代码给外国朋友,那还是utf8合适。

第三步:重启mysql服务,使修改生效,不重启是不会生效的!:

2. 客户端的编码

目前,客户端是cmd命令行,它的编码方式是默认的gbk,而SQL服务器的编码是utf8。这二者不一样没事,我们只要让服务器知道客户端发来的消息是gbk编码的就行了,服务器知道后就可以正确地进行转换编码,不会乱码。就怕:我以为你发来的信息是utf8编码的,而你实际上用的是gbk编码。

解决方法:还是在my.ini文件里,找到客户端编码的地方,修改成gbk:


结果检查

上面都操作好后。我们来用cmd命令行连接一下sql服务器:

第一步:新开一个cmd窗口,账号密码登录一个数据库:

C:\WINDOWS\system32>mysql -uroot -padmin -Dhey

第二步:查看当前的编码方式:

mysql> show variables like '%char%';

在这里插入图片描述

可以看到database, server, system这些与SQL相关的字符集都变成utf-8了,而client, connection, results这些与客户端、客户端-服务器连接、返回给客户端的结果相关的字符集都变成gbk了(因为命令行窗口是gbk编码)。

第三步:检查能否从服务器读回中文,并在cmd窗口显示:

在这里插入图片描述

可以正常读回中文,并且显示正常。


第四步:检查能否从客户端正确发送中文到服务器:

在这里插入图片描述

读回的ID确实是10000,是正确的。这说明服务器看到的name就是‘夏侯惇’。说明我们可以正确的上传中文到服务器。


至此,cmd和SQL服务器可以畅通无阻的使用中文英文了。并且上面的步骤,操作一次,享受一生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值