晚上重温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. excel小技巧

    数据呈文本格式,怎么改成数字? 数据前有'号,如何去掉? 为什么数据格式在修改后需要再双击一下单元格才改过来了? 解决办法:你选中需要更改格式的那列              数据          ...

  2. iOS 改变App状态栏颜色为白色

    默认状态栏为黑色,对于某些App不是很美观,变成白色很简单,只需要两个步骤. 1.在Info.plist中添加新项目,View controller-based status bar appearan ...

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

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

  4. 【日记】thinkphp项目阿里云ECS服务器部署

    项目本地开发告一段落.准备上传到服务器上测试 技术组成 thinkphp+mysql+阿里ECS  代码管理方式git 一.阿里ECS服务器配置 1.因为线上已经有几个站点了.所以要配置ngnix多站 ...

  5. express中的路由

    一.读取静态文件 基本代码: "use strict"; const express = require("express"); let app = expre ...

  6. linux I/O复用

    转载自:哈维.dpkirin url:http://blog.csdn.NET/zhang_shuai_2011/article/details/7675797 http://blog.csdn.Ne ...

  7. LeetCode 368

    题目描述: Given a set of distinct positive integers, find the largest subset such that every pair (Si, S ...

  8. 【DWR系列06】- DWR日志及js压缩

    img { border: solid 1px } 一.日志 DWR依赖 Apache Commons Logging,可以使用log4j实现日志记录功能. 1.1 日志简介 和其他日志框架一样,当设 ...

  9. cmake cannot find package

    cmake 找不到package,如 find_package (OpenMesh REQUIRED) 出现错误 在项目的文件夹中找到 FindOpenMesh.cmake 文件,将其所在路径添加到 ...

  10. 用opencsv文件读写CSV文件

    首先明白csv文件长啥样儿: 用excel打开就变成表格了,看不到细节 推荐用其它简单粗暴一点儿的编辑器,比如Notepad++, csv文件内容如下: csv文件默认用逗号分隔各列. 有了基础的了解 ...