mysql修改字符集,中文乱码问题,屡败屡战

查询当前mysql的编码设置: show variables like ‘char%’;
我看了很多教程,一般就是修改my.ini配置文件
windows mysql
  修改my.ini配置文件
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
还有一种修改mysql默认字符集的方法,就是使用mysql的命令
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
但这种是暂时的哈,修改my.ini配置文件才能一劳永逸啊

中间因为没有真正的“重启”折腾了好久…
所谓的重启数据库不是把窗口关掉就行了!是要在计算机管理中停止它!
顺便在数据库管理中,看一下可执行文件的路径,别改错地方了。
在这里插入图片描述

修改后,好不容易看到都是utf8了,欣喜若狂。
在这里插入图片描述
然而并没有什么用还是乱码,为什么呢?
在这里插入图片描述
可能是当前数据库的字符集没有改,于是我又改了当前数据库和表的字符集,可还是没有用。
修改数据库字符集
  alter database 数据库名 character set utf8;
  (修改完数据库字符集,需要重启mysql数据库!)
修改表字符集
  alter table 表名 default character set 字符集名 COLLATE 字符集支持模块;
  alter table student default character set utf8 COLLATE utf8_general_ci;
在这里插入图片描述
我还特地查看了一下,明明就都是utf8啊
在这里插入图片描述
后来我看到
设置了表的mysql默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES ‘utf8’;
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
可还是没有用
然后我试了一下
set names gbk;
我一开始还想我又不是gbk我是utf8啊,结果居然显示出来了!
终于,折腾了这么久…
在这里插入图片描述
问题出在了当前的 CMD 客户端窗口,因为当前的 CMD 客户端输入采用 GBK 编码,而数据库的编码格式为 UTF-8,编码不一致导致了乱码产生。而当前 CMD 客户端的编码格式无法修改,所以只能修改 connection、 client、results 的编码集来告知服务器端当前插入的数据采用 GBK 编码,而服务器的数据库虽然是采用 UTF-8 编码,但却可以识别通知服务器端的 GBK 编码数据并将其自动转换为 UTF-8 进行存储。可以使用如下语句来快速设置与客户端相关的编码集:
set names gbk;

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读