mysql的表编码是utf8了仍然乱码_MySQL中UTF-8编码的数据在CMD命令行显示乱码解决方案...

原博客网址:

https://blog.csdn.net/DunYLin/article/details/54947865

DunYLin 2017-02-15 00:07:54 9531 收藏 5

分类专栏: MySQL

版权

相信很多人都在windows系统下使用cmd命令行访问mysql数据库都会遇到过一个问题,那就是显示utf-8编码的数据时会出现中文乱码情况,那么我就说下我的解决方案。

测试环境信息

OS : windows 10 专业版 64位 14393

MySQL : MySQL Server 5.5 64位

先来查询一下自己系统上MySQL数据库的编码情况,输入以下命令

show variables like '%character%';

7513b8f557b44798730123983caa3605.png

从这里可以知道mysql数据库已经被设置为utf-8编码方式。

示例

我通过Navicat工具创建一个测试数据库 Test,保证数据库、数据表、数据库文件都是UTF8-编码方式。

dfd8c621af5da2b8e03b4abc9900e3ff.png

我们再来创建一个student表,表结构如下:

728c9d8f811716678788291c23c51b37.png

adbe227c4d9e9e0b19ccdff3f992af5a.png

在Navicat工具里为student表插入两条信息

73642ff794004db207180794a6f80dee.png

然后我们在Navicat工具里通过命令行窗口查询student表的建表信息和数据

319bc9ac0fd44bc089c275e583832a19.png

我们再通过windows的cmd命令行访问student表

45732c714a5d3870f4573ffa3f9e8aa0.png

现在改从cmd命令行插入数据:

但直接在cmd中输入包含中文的insert语句时,mysql会报错(原因等会再说)

6a866f4a29cb804bace18d558a4c902f.png

那就先写好一个sql脚本,再通过source命令导入就不会报错了

source xx.sql

23f666da900f3079914b4b4ea735aa97.png

895ac695fffa8cd9d4c4be1a646093f5.png

以上的案例估计就是大家经常会遇上的中文乱码问题了。

为什么会出现中文乱码呢?

这是因为Windows的CMD默认编码是GBK,MySQL里面是按照UTF-8编码存储数据的,所以CMD不支持自然就乱码了。而刚才我们使用到的Navicat工具,由于它本身的编码被设置为utf-8,所以我们的各种操作都能正常进行。

解决方案

在输入SQL语句前先设置编码:set names gbk; ,再输入SQL。

5d6518cc9c9ba2cb4176b5392cb7ecb9.png

为什么这样设置就能正常显示utf-8编码的数据呢?

请看图:

3f5c85aacf7517eb457d69bfb77b94e6.png

可以看到,client,connection和result的编码已经设置为gbk了,但server,database,system的编码还是utf-8!这就是说,虽然数据是使用utf-8编码存储的,但是客户端以及返回的结果集是gbk的,而此时cmd窗口的编码正好是gbk,因此该结果集能正确显示了。

————————————————

版权声明:本文为CSDN博主「DunYLin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/DunYLin/article/details/54947865

更详细的解释见

Reference: https://www.cnblogs.com/digdeep/p/5228199.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值