最近在学习MySQL时遇到了无法在cmd显示中文和通过cmd向Mysql插入中文的问题,
下面就简单说下我是怎么解决的。
在往下进行之前,先介绍一个Mysql命令:
mysql> show variables like "char%";
+--------------------------+--------------------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\mysql\share\charsets\ |
+--------------------------+--------------------------------------------------------------------------+
8 rows in set (0.00 sec)
这个命令查询了Mysql字符集编码方式相关的几个变量,若要正确在cmd中显示与输入中文,需要对这几个变量进行设置。
首先我是通过导入sql格式的文档创建Mysql数据表的(怎么导入上篇博文有讲到),如下是导入的sql文档的主要内容:
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `websites`;
CREATE TABLE `websites` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',
`url` varchar(255) NOT NULL DEFAULT '',
`alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
`country` char(10) NOT NULL DEFAULT '' COMMENT '国家',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
BEGIN;
INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'), ('3', '菜鸟教程', 'http://www.runoob.com/', '4689', 'CN'), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
导入该表后,在cmd使用select查询结果中文显示的都是乱码,使用mysql> show variables like "char%";发现character_set_results变量值与mcd编码方式不一致,
上网查询后使用命令mysql> set character_set_results=gbk; 之后再使用select查询,发现中文能正常显示了。
试图通过命令mysql> insert into websites (name, url, alexa, country) values ("百度", "https://www.baidu.com/", 4, "CN"); 插入一个新行,使用select后
发现新插入的行中文依旧是乱码,进行如下设置set character_set_client=gbk; set character_set_server=gbk; set character_set_connection=gbk;
之后再插入新行,发现中文能够正常显示。
如果也遇到了类似问题,不如按照上面讲的试一试。
下面就简单说下我是怎么解决的。
在往下进行之前,先介绍一个Mysql命令:
mysql> show variables like "char%";
+--------------------------+--------------------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\mysql\share\charsets\ |
+--------------------------+--------------------------------------------------------------------------+
8 rows in set (0.00 sec)
这个命令查询了Mysql字符集编码方式相关的几个变量,若要正确在cmd中显示与输入中文,需要对这几个变量进行设置。
首先我是通过导入sql格式的文档创建Mysql数据表的(怎么导入上篇博文有讲到),如下是导入的sql文档的主要内容:
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `websites`;
CREATE TABLE `websites` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',
`url` varchar(255) NOT NULL DEFAULT '',
`alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
`country` char(10) NOT NULL DEFAULT '' COMMENT '国家',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
BEGIN;
INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'), ('3', '菜鸟教程', 'http://www.runoob.com/', '4689', 'CN'), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
导入该表后,在cmd使用select查询结果中文显示的都是乱码,使用mysql> show variables like "char%";发现character_set_results变量值与mcd编码方式不一致,
上网查询后使用命令mysql> set character_set_results=gbk; 之后再使用select查询,发现中文能正常显示了。
试图通过命令mysql> insert into websites (name, url, alexa, country) values ("百度", "https://www.baidu.com/", 4, "CN"); 插入一个新行,使用select后
发现新插入的行中文依旧是乱码,进行如下设置set character_set_client=gbk; set character_set_server=gbk; set character_set_connection=gbk;
之后再插入新行,发现中文能够正常显示。
如果也遇到了类似问题,不如按照上面讲的试一试。