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;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值