晚上重温dos窗口操作mysql的时候,遇到了一个巨蛋疼的问题------>中文验证码  -->_-->,所以找了找资料弄懂了怎么解决乱码问题,,小记一下。

新建一个表

create table student(
id int,
name varchar(),
chinese float,
english float,
math float
);

向表中插入数据(包含中文)

insert into student (id,name,chinese,english,math) values (,'李狗蛋',,93.5,);

结果如下:

报了一个Data too long for column 'name' at row 1的错误,,,为什么呢?我的那么字段是20个字符的啊,,,李狗蛋三个字肯定够啊,,,为什么还提示太长了呢!!!!其实呢,,这种情况下就算你只有一个汉字,也会报这个错。。。。原因何在?----->中文乱码问题!!!

跟servlet中乱码产生的原因一样,还是在与提交与接受二者之间的编码方式不一样。。。。

我们知道,在中文版win7下 dos命令行的默认编码方式都是gbk的,而我们装的mysql服务器的默认编码方式确实utf8,,这样,,两个编码方式不一样。。。通过dos窗口向mysql服务器提交中文数据,一个以gbk编码提交,一个以utf8解码接收,可不就产生了乱码了嘛。

不信我们看看mysql的默认编码----在dos窗口输入

show variables like 'character%';

查看mysql服务器的编码各种编码状态,如下:

但其实这些编码格式只是mysql认为的你的系统的编码模式,但实际情况并非如此。表现在:客户端编码-->mysql认为utf8,但其实你的dos命令行是在我天朝的win7下,那么你就是gbk的编码格式,而不是utf8;其他的都是默认的utf8。到这里就可以看到,客户端为gbk,连接方式为utf8,服务器存储方式为utf8,结果返回方式是utf8,那么,,乱码的出现原因就呼之欲出了--->两方编码不一样,以gbk敲代码,结果以u8编码,然后以utf8发送,以utf8接收。所以怎么解决呢?

  两种办法解决乱码问题:临时方法和彻底方法。

临时方法:在dos行下输入“set names gkk;”然后再查看一下编码方式,如下:

  明确告诉客户端,我的dos行是以gbk敲进去的,你得用gbk给我编码;告诉连接桥,我数据是gbk的,你得用gbk给我传输;告诉服务端,我的dos行是gbk的,你得用gbk把我存的数据返回给我。现在我们再插入有之前有中文的那行数据,

可以看到,乱码问题已经不存在了。。。。但是呢,开头都说了,这中方法是临时型的,,为何?来,打开另一个dos窗口,查看下所有的编码方式:

这个时候,你再插入带有中文的数据,保证还是刚才的错误。。。为啥呢?因为"set names gbk;"只针对当前客户端(就是那个dos窗口)起作用。。打开另一个窗口就不行了,所以这种方法治标不治本。如果每次都这样,那不得累死了!!(不要跟我说你用可视化的mysql操作软件,,我们现在的语境是你根本不知道可视化,,,),那么怎么一劳永逸的解决这个问题呢?

彻底解决:修改mysql配置文件--->my.ini

找到你的mysql安装目录下的my.ini文件,记事本打开,找到-----default-character-set=utf8 这句话,修改utf8为gbk

然后重启mysql,,好了,乱码被干掉了。Oh YEAH!!

多说一下,为什么改成gbk之后就搞定了乱码。。这中间涉及到了三个数据转换过程:编码,解码,转码。

所谓编码,就是将字符编成二进制数据的过程;

所谓解码,就是将二进制数据解析为字符的过程;

所谓转码,就是将一个字符从a字符集表示的二进制数据转换成b字符集表示的二进制数据的过程。

在客户端通过连接桥将gbk的数据发送给服务器的时候,两方的编码集其实是不一样的,数据库接收到的是gbk,服务器要以utf8存储,在这个过程中,如果不做些什么,乱码是解决不掉的。。其实在这个过程中,服务器自己做了一个转码的操作:将接收到的gbk数据转换成utf8存储到数据库中,然后你查询的时候它自动将utf8的数据转换成gbk返回给你看。所以,乱码没了。

干掉命令行窗口下MySql乱码的更多相关文章

  1. 在windows命令行窗口下执行:查看所有的端口占用情况

    开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...

  2. 命令行模式下 MYSQL导入导出.sql文件的方法

    一.MYSQL的命令行模式的设置:桌面->我的电脑->属性->环境变量->新建->PATH=“:path\mysql\bin;”其中path为MYSQL的安装路径.二.简 ...

  3. MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。

    1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...

  4. windows 下命令行启动停止mysql

    MySQL比较好玩一点就是它可以用多种方式启动,当然它也可以用多种方式关闭.下面我就mysql的几种启动方式简单的谈一谈,希望可以给大家提供一些参考. 第一种,用mysqld-nt来启动. 在没有进行 ...

  5. cmd - 命令行窗口中文乱码

    问题 在cmd窗口中输入curl www.baidu.com可以看到有中文乱码的现象,这是因为默认使用的是GBK编码.另外,curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在 ...

  6. linux虚拟机命令行模式下,某些命令显示乱码问题。

    刚安装了linux虚拟机,使用vi命令试着修改IP配置,结果出现乱码.配置IP的文件内容本身没有乱码,主要是vi编辑的命令行的提示出现乱码,例如,按i是插入模式,结果底下出现乱码提升,不是提示插入. ...

  7. 【Python】解决Python脚本 在cmd命令行窗口运行时,中文乱码问题

    问题描述 python2.X,代码中指定了UTF-8,但是在cmd命令行窗口时,打印的中文仍然会乱码 在python3不存在该问题 运行结果: 原因 搜索得知,中文windows默认的输出编码为gbk ...

  8. JavaWeb问题记录——在Windows上启动Tomcat后命令行窗口乱码

    JavaWeb问题记录——在Windows上启动Tomcat后命令行窗口乱码 摘要:本文主要记录了在Windows上启动Tomcat后,命令行窗口出现乱码的问题及解决办法. 问题重现 在Windows ...

  9. 命令行环境下简单实用的工具——重定向&管道

    如果你对管道和重定向应用自如了,无需继续往下看.本文虽然以windows上cmd命令行环境演示,但同样适用于Unix/Linux等平台. 引言 关于管道和重定向,最初是在刘汝佳的<算法竞赛入门经 ...

随机推荐

  1. 时间同步ntp服务的安装与配置(作为客户端的配置

    在linux环境下,我们不仅可以自己设置时间,也可以对系统进行时间的同步,比如同步时间到某台物理机上或虚拟机,皆可!接下来我们就以同步时间到某台物理机为例, 一起学习学习. 1.配置本地yum源(挂载 ...

  2. 转行进入IT前端,目标全栈

    选择进入IT这个行业,未来充满着挑战,未来充满着机遇,互联网已经走入高速稳定的发展正轨了,前端大时代也已经到来了.前端之路怎么走,前端需要不停地学习新知识,跟紧时代的步伐,成为全栈工程师是前端的目标. ...

  3. myabatis oracle 调用存储过程返回list结果集

    Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="emp ...

  4. 如何在eclipse中通过Juit进行单元测试

    1.什么是Junit Junit即单元测试,是JAVA语言的单元测试框架,是对程序的一个方法所进行的测试 一般都是由程序员自己通过Junit来进行测试,因此单元测试也叫程序员测试: 如果测试人员熟悉程 ...

  5. linux history命令显示时间

    在CentOS上使用history查看历史使用的CMD记录时,发现没有时间,在当前用户的.bash_profile里面,添加 export HISTTIMEFORMAT="%F %T  `w ...

  6. python之路:Day02 --- Python基础2

    本节内容 1.列表操作 2.元组操作 3.字符串操作 4.字典操作 5.集合操作 6.文件操作 7.字符编码与转换 一.列表操作 定义列表 names = ['Ming',"Hua" ...

  7. JS 模块化和打包方案收集

    1.这里想讨论的是拆分规则,不是在问哪个工具怎么使用.2.这里没有在想找正确答案,因为感觉这个问题要结合具体业务场景. 随着项目开发越来越大,一开始代码全打包到一个文件的方式,让文件越来越大,接下来要 ...

  8. 让IIS支持bootstrap 增加svg和woff格式文件的支持

    增加以下两种文件类型即可: .woff application/x-woff.svg image/svg+xml

  9. JAVA内部类有关

    最近在看单例模式的实现,看到有一种利用JAVA静态内部类的特性来实现,对于内部类我还真是不了解,遂了解了一下,代码贴上. /** * 内部类分为:成员内部类.局部内部类.匿名内部类和静态内部类. */ ...

  10. LeetCode 1. Two Sum

    Problem: Given an array of integers, return indices of the two numbers such that they add up to a sp ...