永久解决mysql插入中文乱码问题 插入中文时mysqlfront正常但是mysql命令行界面出现异常 mysql插入时候出现error 1366问题 重装mysql的链接也在里边 (更正后)

转载需标明出处

给出解决思路:1,重装mysql在设置的时候将字符集设置为utf8,2,打开重装后的mysql文件夹内的my.ini文件将default-character-set=的值设置为gbk,3更改mysql-front等数据库可视化软件的字符集为utf8(包括数据库、表),此方法亲测有效,干净删除mysql和重装mysql的方法的链接都在文章当中,亲测有效。
此处是解决办法,至于为何这样做以及具体操作的步骤,在后文之中会有说明。
用此方法解决的问题:
1.数据库插入不了中文数据
2.数据库查询中文为问号或者不认识的中文字符
3.数据库可视化软件无法查看中文
4.数据库可视化软件可以查看插入中文但是mysql命令行界面无法查看或插入中文
此问题在mysql命令行界面插入中文的时候会出现error 1366的报错

所有内容都亲测有效,只要和我一起做完这套方法,一定永久解决mysql插入中文乱码的问题。当然如果觉得重装麻烦的可以多看看其他文章。此文会显得过于冗长,因为解决问题要了解自己的操作到底改变了什么。

首先 我在网络上查看了很多前辈的经验
感谢
https://blog.csdn.net/yuanlaijike/article/details/67639981?locationNum=12&fps=1

https://www.cnblogs.com/fangyh/p/6286699.html
以及
https://blog.csdn.net/u013628152/article/details/44617571

此篇文章的操作环境是windows

首先要明确
数据库产生乱码的原因
就是字符集标准的不匹配
而若想改变数据库的字符集标准,就得去mysql的安装目录下找到my.ini文件

如好多人在初始设置mysql时候会省略步骤,直接安装到了C盘
这里在看过前人的帖子后,不建议安装到C盘。
在安装到C盘之后,我遇到的问题是无法提权去更改my.ini文件
而若想永久的更改数据库的字符集标准就需要去更改my.ini文件
这里我苦逼的去重装了一下mysql
当然如果你可以去更改my.ini文件的话,另当别论
但是我没有办法只能重装把mysql的安装地址更改到了非c盘的位置,哭哭
mysql删除教程(卸载、删除注册表、删除C盘下的“C:\ProgramData\MySQL ”所有文件)

mysql5.5安装教程

出现了乱码如何去解决呢 这里推荐这篇文章去解决 此篇文章的博主已经说的很详细了
解决数据库乱码问题的原因以及基本操作
看完文章后你会发现
出现中文乱码的原因是字符集标准不支持中文如latin1,或者使用了支持中文字符集的标准,如utf8、gbk、gb2312,但是在各个软件的字符集的标准不一样,比如mysql用的是utf8,而数据库可视化软件用的是gbk或者gb2312,概括来说就是使用同一数据源的多个软件的字符集标准不同,也会出现中文乱码问题,了解原因之后,就开始动手处理问题,补充一点,由于windows操作系统下mysql命令行界面使用的字符集标准是gbk,当你想使用非gbk标准作为字符集标准的时候,在统一各个软件的字符集标准为utf8后还需要进行一次操作即步骤3来完成你的目标。

如果你在安装mysql的时候,使用的是默认安装,数据库的标准就会是latin1
如果你想知道你数据库的标准是什么
可以在数据库的命令行界面输入如下代码

show variables like "%char%";

显示的结果的格式会如下图一般(value的内容会因为设置的不同而存在差异)
这里写图片描述
解决乱码的方法

只有在标准一样的时候,如同两个水管的接口标准是一样的时候,数据流才会从两根连接的水管中完好无误的流过,
所以,我们要将数据库的标准更改为utf8,还要将数据库可视化软件的标准改为utf8
方法如下

(1)要将你的mysql-front等等其他的数据库可视化软件的有关数据库的标准设置为utf8
如图为数据库的配置,右键数据库
这里写图片描述
之后点击属性,设置数据库为utf8,如图所示
这里写图片描述
若已经有表建立
则继续把表的标准改为utf8
如下图
这里写图片描述

(2)将mysql的字符集标准设置为utf8 的模式
我选择的是重装,在安装进行配置的时候不要选择默认设置,要自己动手设置标准为utf8,详情请见下边的重装攻略,哭哭。
如果你是已经安装完成的mysql想要更改字符集标准,因为我是迫于无奈暴力卸载重装的,所以这个没有操作过,大家可以再去看看其他的文章。
mysql删除教程(卸载、删除注册表、删除C盘下的“C:\ProgramData\MySQL ”所有文件)

mysql5.5安装教程
(3)在完成步骤1和步骤2的时候,你会发现怎么我两个方面都设置为utf8后,mysql-front等可视化软件中的中文已经可以正常存储了,但是mysql的命令行界面在进行查询的时候,还是会出现自己不认识的中文字符,而在 增加数据操作的时候,会出现error 1366问题,这是因为,windows的cmd界面输入输出时候使用的是gbk标准,所以 在使用mysql命令行界面进行insert 、select等操作是,使用的字符插入或显示的字符的标准为gbk,但是经过前两步的操作,你的mysql存储的标准已经设置为了utf8,mysql显示以及输入的格式也是utf8,而cmd界面输入以及显示的标准是gbk,所以你会在数据库可视化软件上看到了完好的中文数据(因为可视化软件的存储、输入、输出的标准都为utf8),而你的命令行界面使用select查看到的数据库会出现乱码的原因就是这样。

接下来,更改你数据库的输入标准以及输出标准,

在这里,上文中提到的博主
他会要求你在每次运行mysql时候都让你去设定运行
set names gbk;
将cmd界面的输出输出格式调整为gbk,
这个操作不是永久改变配置而是单次有效的操作
所以你就会觉得很麻烦
这里写图片描述
在对比未执行set names gbk;命令时
我会发现 在使用代码
set names gbk;后
会将我的
character_set_client=utf8改为character_set_client=gbk;
将我的
character_set_connection=utf8改为character_set_connection=gbk;
将我的
character_set_result=utf8改为character_set_result=gbk;
(注意,因为我在安装mysql时候就已经是utf8,所以是将utf8改为了gbk,若初始设置不同,则更改之前的值也不同,视个人情况而定,初始值不都是utf8,有不同的初始值都是正常的)

而这个时候,如果你在my.ini 文件中设置的是默认值为utf8时候
在你重新打开mysql时候,你会发现上述的三种设置将会恢复原来的utf8(此处的utf8是我的配置,和大家的有不同是正常的)
而不是所需要的gbk
这时候你就会很烦恼,难道每次重新打开mysql的时候都要这样设置么

在这里,我在浏览文章是了解到,如下图设置后,
重启mysql后,需要标准为gbk的地方还为gbk,而不是默认值utf8

这里写图片描述
即:将default-character-set等号右边的值改为gbk,

改完之后,在数据库中使用命令行

show variables like “%char%”;

查看字符集标准时你就会发现变化与使用set names gbk;命令行得到的结果相同,但是此处在my.ini配置文件中的更改的影响是永久的。

此下三行是进行操作后发生变更的内容:

character-set-client=gbk
character-set-connection=gbk
character-set-results=gbk

至于为何会出现这种情况,我并不清楚真实的原因

若你没有看到更正前的文章,此注可以略过,若你看到过更正前的文章,并进行了相应的步骤3 的配置,会造成my.ini文件配置的错误,请务必按照此注进行复原并重新按照更改后的步骤3进行相应的配置,为了阅读的完整性,我将此注放在了更正后的步骤3之后。
(注:在发现错误之前,文章中第三步的my.ini文件的配置是错误的,但你看到了这段话之后这篇文章的错误已经更改,错误配置的后果是以管理员身份的cmd中关闭mysql后无法重启,对文章更改之前造成的错误表示歉意,如果出现了无法重启的现象,可以将my.ini文件的配置按照以下链接内容中的my.ini的配置进行还原,之后就可以重启mysql了
my.ini文件的标准配置内容的链接
也可以对照my.ini文件相应的标准文件配置进行更改,相应的配置如下

[client]

port=3306

[mysql]

default-character-set=gb2312
# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this 
# file.
#
[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3306


更改完成后,你会发现mysql在关闭之后可以正常启动了,之后可以按照更正后的步骤三进行操作,你会发现,更正后的步骤3的操作就是将标准配置文件中的
default-character-set=gb2312
更改为了
default-character-set=gbk
再次对发生的错误表示歉意

在一篇文章中看到了下述内容,对字符集标准的设置的理解会有帮助

MySQL字符集设置
系统变量:
– character_set_server:默认的内部操作字符集
– character_set_client:客户端来源数据使用的字符集
– character_set_connection:连接层字符集
– character_set_results:查询结果字符集
– character_set_database:当前选中数据库的默认字符集
– character_set_system:系统元数据(字段名等)字符集

上述内容的出处
这可以帮助理解为何有些value需要设置为gbk,有些value需要设置为utf8

完成上述的操作后,接下来验证劳动成果
1.在cmd界面下查看中文数据,插入中文数据(要注意这里没有使用use names gbk;命令,而是更改了my.ini配置文件)
这里写图片描述
2.在数据库可视化软件中查看结果
这里写图片描述
这里写图片描述

总的来说,如果你在设置mysql和数据库可视化软件mysql-front等的软件的标准时将标准都设置为gbk则不需要第三步。

所以,希望这篇文章可以帮助大家少走弯路,哭哭,此处让我想起了自己走过的弯路,再次哭哭。

这篇文章是经过实践完成的,除了在处理步骤(2)时候我选择了重装,另一个改变my.ini文件的方法我没实践,(我也想实践啊,哭哭)因为安在了c盘,win8 系统又不知道怎么搞的提权很麻烦,所以在更改安装在C盘里的mysql里的my.ini文件会很麻烦,如果要解决提权的问题会偏离我的初衷,所以我就直接怒刚卸载,再次哭哭。所以我想说的是按照这一套流程下来,解决问题是可以的,如果你觉得麻烦,就多看看其他的相关文章,如果还是解决不了,只能说,兄弟,和我一起正面刚它就完事了

写完收工准备吃饭啦

补充一条 自己写的第一篇文章,因为大部分不是自己的东西,只是总结前人经验,所以就写成转载了,求赞Q-Q 。

再补充一条,不好意思,在此篇文章更正之前步骤三的更改my.ini文件的操作是错误的,对大家造成的误导感到十分抱歉,内容已经更正,第三步的内容经过重启mysql的测试,已经得到验证。再次向更正之前浏览过这篇博文的网友致歉。

再再补充一条,原来我无法使用管理员权限的原因是,在安装jdk配置path的时候,放在了最前边,大家配置path还是按序依次加分号向后放吧,别光觉着省事,这不,之前挖的坑自己迟早要跳进去的,这是我重装mysql配置path之后回想起来的操作,再次哭哭

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值