win10系统CMD窗口MySQL中文乱码
【问题描述:】
软件、系统环境:
操作系统:Windows10(64位)
MySQL软件及版本:mysql-5.6.37-winx64.zip(免安装绿色版)
IT小白,刚开始自学MySQL数据库,结果就卡住了,于是打算写下这篇日记(可能称不上文章,就日记吧),第一次在博客中写文章,又是非专业人士,文章逻辑、观念理解等肯定有错漏。Windows10系统下通过cmd窗口,输入命令行,向MySQL数据库表中插入数据的时候出现了问题,出入带中文字符的数据就会乱码。经过几番挣扎,看了N多博客文章,按照他们介绍的方法(有在MySQL里面通过手动设置字符集编码的,有通过修改my.ini配置文件的),我都尝试了,但最初我都没修改成功。
直到最后我解决了中文乱码问题的时候,发现并不是他们的解决方案的问题,而是我缺少的一步,这一步是我在安装MySQL,配置my.ini文件时忽略的(为了解决中文乱码这个问题,我重装了3次MySQL,最后发现也不是软件的问题,而是配置过程的问题),那就是忘记手动设置MySQL默认的配置文件为my.ini。
【以下是我的理解,如有纰漏,欢迎指正】
【简单说,cmd窗口下mysql中文乱码主要是cmd客户端、mysql客户端和这两个客户端之间传输信息的连接层,三者的字符集编码方式出问题】
虽然网上说mysql会默认使用后缀.ini的配置文件,但是在MySQL解压目录下有 my.ini 和my-default.ini 两个配置文件,如果不在安装配置MySQL服务器的时候手动设置谁作为配置文件来使用,那么在启动或者是命令行修改字符集编码配置信息的时候,会报错或者配置在服务器重启之后没有生效(我遇到的问题,当mysql解压目录根目录下同时存放 my.ini 和 my-default.ini 两个配置文件,用命令行启动mysql服务时提示系统发生意外,服务无法启动,删掉两者之一,停止任务进程,重启服务有可以正常启动)
【注意】:如果按照网友问提出的解决乱码的方法(基本上就是下面两种,暂时留到后面细讲,这里主要介绍如果这两种方法都没效果的最后一个尝试方法—手动选定mysql默认的配置文件):
-(1)cmd窗口连接进入mysql服务器之后,通过命令行手动mysql字符集。【这种方式只能临时有效,下次重新启用mysql服务,上次手动命令行修改的配置会失效】
-例:使用命令行设置字符集
set character_set_(client、connection、database等) = (gbk、utf8);
-(2)找到MySQL解压目录根目录,修改配置文件my.ini。【修改配置文件的方式会永久有效。这里我的mysql解压路径是 D:\SoftWare\mysql-5.6.37-winx64 】
如果上面这两种方法都没效果,那就试试下面的方案!!!
**
针对Windows10系统中免安装版mysql-5.6.37-winx64在cmd窗口出现中文乱码最终尝试解决方案:
关闭MySQL服务,手动设置MySQL服务采用 my.ini 作为默认配置文件
- 首先关闭MySQL服务(管理员运行cmd窗口,以免权限不足,无法执行命令)
-找到MySQL解压目录(安装目录—因为我用的是免安装的MySQL,找到解压目录即可)
-查看 my.ini 文件里面的配置信息【如果没有 my.ini 文件,可以把 my-default.ini 复制一份重命名为 my.ini,再手动写入配置信息就好了。】
[client]
port=3306
default-character-set=gbk
[mysqld]
port=3306
character_set_server=utf8
#安装路径
basedir=D:\SoftWare\mysql-5.6.37-winx64
#数据路径
datadir=D:\SoftWare\mysql-5.6.37-winx64\data
[WinMySQLAdmin]
D:\SoftWare\mysql-5.6.37-winx64\bin\mysql.exe
从cmd控制台窗口进入MySQL解压目录下面的 bin 目录
切换盘符到安装目录所在的盘符(我的解压目录在 d 盘)
d: 回车("盘符名" + ":" 英文状态下的 )
cd D:\SoftWare\mysql-5.6.37-winx64
( cd 后面有个空格)
在mysql的 bin 目录下输入命令:
mysqld install MySQL --defaults-file="D:\SoftWare\mysql-5.6.37-winx64\my.ini"
-这里提示服务已存在,因为我在这之前就已经把 my.ini 文件设置成默认的了,现在再次输入这个默认文件配置命令就提示该服务已经存在了!
-然后打开MySQL服务,连接进去查看新旧数据库表是否能够正常插入和显示中文字符。
===========================================================================================================
【下面是我还原配置,重现cmd中mysql中文乱码到再配置解决中文乱码的记录,小白一枚,理解和表达还有很多问题,写的乱、不好,只作为一次记录(不敢断定正误),但毕竟第一次写,希望以后有进步!】
-由于我原来MySQL中 my.ini 配置文件已经配置好,我现在还原配置,使其出现中文乱码的问题,最后再通过修改配置,解决中文乱码问题,顺带附图
【这里斜体字部分是 将我原来配置好的mysql通过移除服务,再次使用命令行安装和配置 的过程】
- 关闭mysql服务器:
net stop mysql
- 移除mysql服务
mysqld remove