前言
由于在使用mysql创建数据库,添加表,以及增加表数据时出现的问题
使用的命令
show databases;
create databases student;
use student;
alter table student add address varchar(20);
insert into student values
(20190201,'张勇','男',1998,'计算机科学系','四川省成都市'),
(20190301,'张涛','男',1997,'计算机科学系','四川省成都市'),
(20190401,'张小天','女',1999,'计算机科学系','四川省成都市'),
(20190402,'陈丽','女',1999,'计算机科学系','四川省成都市'),
(20190502,'李欣','男',2000,'计算机科学系','四川省成都市'),
(20190203,'张雯雯','女',2000,'计算机科学系','四川省成都市');
select * from student;
mysql 默认使用的是utf-8编码方式
cmd命令窗口默认GBK简体中文编码
由于编码不统一的问题导致
显示的结果
方案一
正确的解决方案是 进入 mysql目录将配置文件重新修改成 GBK2312
关于 GBK
关于GBK编码 编码
这就是修改成它的原因啦
方案二
我们一般不走寻常路,看一看有没有解决方案(因为utf-8也包括中文编码)
CMD窗口可以修改输入的编码方式 yyds
找到这条命令chcp 命令(修改编码默认是936,当然这样的效果只是存在于当前的cmd窗口,不是全局设置)
我们cmd窗口输入 chcp 65001 修改 编码
好了为了方便我们讲cmd控制台窗口的 输出历史记录导出 到文件
doskey/HISTORY > e:\cmd历史记录.txt (普通cmd窗口并没有管理员权限,所以导出到e盘方便我们查看文件内容)
惊奇的发现这样并不能导出在mysql输入的命令
所以我又找到了mysql输出命令
mysql> tee e:\数据库历史命令.txt (注意是进入mysql时使用的命令,所以测试前先输入它)
提示 就成功了
Logging to file 'e:\数据库历史命令.txt '
使用cmd窗口UTP-8 编码方式 执行命令观察 过程
进入cmd时修改chcp
登录数据库
并执行tee e:\数据库历史命令.txt
等等又出错了
提示 错误1300 (HY000):无效的utf8字符串:bი外
然后我 方向上键 再次输入相同的命令 它又显示成功了 这这这---------看来是瞎搞的问题吧
看来已经埋下了果子了
我们继续
忘记 记录命令了(看到了吗?有因有果,直接解析成ppppp了)
先不管它 输入
select * from student; 查看表记录
这里就对应刚刚重复输入相同命令的结果了 (蓝色标记)
第二次输入相同的值(中文)却被解析 的结果却成了不一样的编码 ??????
暂且保留问题我们继续
(把文件另存为utf-8编码方式)查看结果
没啥变化
我们尝试删除它时 显示是被守护进程了(说明没有其他问题)
结论:窗口输入的信息没有问题,解析过程出来问题 查询表的记录时
总结 使用cmd窗口不同编码方式 执行命令观察 过程
最终结论
不同编码方式的结果确实不同,但改变编码方式的是没有效果的 -----真遗憾
记录这个过程