MySQL报:ERROR 1366 (HY000) 编码格式错误 解决问题的办法

有时候在进行数据库插入数据的时候,会报1366的错误【也不一定是插入啦,因为我暂时也就是因为在插入的时候遇到了这个问题】,下面我来重现一下这个错误【在看的时候,还是要尽量看我截图上的代码,因为我写的时候,可能有些错误,但是在截图中的那肯定是错不了的,要仔细了】

MySQL报:ERROR 1366 (HY000) 编码格式错误 解决问题的办法_第1张图片

这是什么原因呢?

 1.首先我们可以查看一下我们数据库的编码:

show variables like 'char%';
MySQL报:ERROR 1366 (HY000) 编码格式错误 解决问题的办法_第2张图片
查询出来之后,主要看client和result的编码方式
2.编码解释和控制台乱码问题
client = utf8
无论客户端什么编码格式的数据,MySQL都会把它当成utf8的数据
》控制台乱码问题【gbk】
客户端发送的是gbk,但是服务器会把它当做utf8处理,如果是汉字的话,肯定会出现乱码的问题
如何解决乱码问题呢?——》修改MySQL服务器端【client】的接收数据编码格式,将其置为gbk,其代码为:set character_set_client = gbk;
但是有一个弊端就是,如果关闭窗口的话,设置就又恢复到原来的utf8,所以说,并没有长久有效的解决这个问题。
result=utf8
服务器用什么编码格式将发数据发送给客户端
》控制台乱码问题【gbk】
如果是utf8代表的是服务器使用utf8编码格式将数据发送给客户端,但是客户端的编码方式gbk,两者编码
方式不一致
解决:1)将客户端设置为utf8【但是你觉得可行么?反正我觉得不行】
2)让服务器发送gbk的数据:set character_set_results = gbk;但是这也并不是一个长久的办法
归根结底出现乱码问题:
客户端发送的数据编码格式与服务器接收数据的编码格式不一致
解决问题:
让两者一致呗,不然改来改去,你也就不知道你改没改
一般乱码出现问题都是在控制台出现的,然而呢,上面两种用语句来修改的操作只是暂时的,那么,我们如何来长久设置它呢???【哈哈哈,前面讲了那么多,就是为它来铺垫的】
那么 就是 修改MySQL的配置文件 my.ini这个配置文件
MySQL报:ERROR 1366 (HY000) 编码格式错误 解决问题的办法_第3张图片
MySQL报:ERROR 1366 (HY000) 编码格式错误 解决问题的办法_第4张图片
如果原来设置的是utf8,将其改为gbk【因为控制台是gbk,只有用gbk的方式来接收,才不会出现乱码问题】
将default-character-set=gbk后将影响三个字段 :client results connection ,配置成功之后保存,重启MySQL服务器
MySQL报:ERROR 1366 (HY000) 编码格式错误 解决问题的办法_第5张图片
MySQL报:ERROR 1366 (HY000) 编码格式错误 解决问题的办法_第6张图片
MySQL报:ERROR 1366 (HY000) 编码格式错误 解决问题的办法_第7张图片
其实,这个在这和里面会报这个编码出错的问题啦,其实如果说你只是练习的话,你可以用拼音替代一下也是可以的,也就没有这个编码格式的错误了。

           也可以使用mysql命令进行更改:

set character_set_client = utf8;

set character_set_server = utf8;

set character_set_connection = utf8;

set character_set_database = utf8;

set character_set_results = utf8;

set collation_connection = utf8_general_ci;

set collation_database = utf8_general_ci;

set collation_server = utf8_general_ci;


你可能感兴趣的:(bug)