晚上重温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. 【Android】设置android:maxLines="1"后,android:imeOptions="actionSearch"失效

    android:singleLine在API LEVEL 3已经废弃,可以用android:maxLines="1"代替. 但是测试的时候发现设置android:maxLines= ...

  2. 【webGL】threejs入门 ---创建一个简单立方体

    开发环境 Three.js是一个JavaScript库,所以,你可以使用平时开发JavaScript应用的环境开发Three.js应用.如果你没什么偏好的话,我会推荐Komodo IDE. 调试建议使 ...

  3. myql 查询树形表结果:说说、说说的述评、评论的回复

    myql 查询树形表结果:说说.说说的评论.评论的回复 有三张表关联表: 用户的说说表(ixt_customer_note) 说说的评论表(ixt_customer_note_comment) 评论的 ...

  4. [Android Pro] 精确记录和恢复ListView滑动位置

    reference to : http://blog.csdn.net/welovesunflower/article/details/7926512 工作中遇到一个需求,对ListView某一项操作 ...

  5. CSS网页制作常用标签

    做了一个简单的网页,从布局到加内容,遇到了很多小问题.很多标签和属性都不会用或者忘记了.所以以此记录一下. 一.如何将边框四角变圆?(或做一个圆形) 顾名思义,如果要更改边框的角需要用到边框(bord ...

  6. 修改linux文件权限

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  7. 【笔记】js操作cookie

    $.cookie('the_cookie'); // 读取 cookie            $.cookie('the_cookie', 'the_value', { expires: 7 }); ...

  8. CentOS安装gitLab服务器

    首先利用gitlab-install-el6.sh安装,比较简单: (出处:http://www.linuxidc.com/Linux/2013-06/85754.htm) 1:如果有条件,提供一台全 ...

  9. C# oracle odp.net 32位/64位版本的问题

    问题如下: 系统是win7 64位,技术 asp.net mvc 4, 数据库 oracle 11g. 由于某些原因只能使用 32的 ODP.NET ( Oracle Data Provider ), ...

  10. Toad for Oracle

    # 设置schema browser 多标签