mysql字符集探索-character_set-variables(一)

1

写这篇是为了记录探索  常用的mysql字符集-因为百度没查到想要的-就只有自己来了

最初的问题是:我把所有字符集设置为utf8,但是insert中文会出错,看到一篇文章后明白,是cmd窗口的字符集为gbk(右键cmd窗口-属性),而mysql客户端以utf8解析出错

然后为了避免此问题,我试图将mysql客户端的字符集设置为gbk,修改了配置文件my.ini如下:

           default-character-set=gbk

只需要重启mysql客户端,insert语句确实成功的执行了

 

2

由此我决定认真理清mysql的字符集,减少这些问题,于是遇到了两个新问题:

2.1

show variables like "%char%"; 与 show global variables like "%char%";

在不重启mysqld的情况,分别修改了

        [mysql]

        default-character-set=字符集

        [mysqld]

        character-set-server=字符集

然后调用这两个命令查看结果

得出结论:show global variables like "%char%";所得在不重启mysqld 的情况下是不会改变的,应该是启动mysql服务时,由  [mysqld]指定,且不能更改

而show variables like "%char%";中的三种(client-connection-result),会因  [mysql]的改变而改变,具体原因见官网,这里主要是探索global是什么

 

2.2

而当我发现是这三者被改变时-引起了下一个问题:connection的定义是什么:

因为我之前百度了一些,多是copy,说:服务端接收到的客户端的请求格式为client,之后会将client的格式转化为connection的格式,然后交由服务端处理

也就是说,如果server是utf8,那么connection的格式也应该是utf8才对

而这里的connection,显然和client是绑定的。

所以我需要讨论这三者的关系:

我设置

        [mysql]

        default-character-set=utf8

        [mysqld]

        character-set-server=utf8

并重新启动了mysqld(mysql也是需要重启的):此时所有编码都是utf8

然后就出现了诡异的事情

第一次,set character_set_client=gbk; 运行是会成功的;但是查询出来的值是乱码,set character_set_result=gbk; 然后查询正常

但此时有个问题,connection任然是utf8,而不是gbk,并不影响任何语句,它到底有什么用

第二次 set character_set_client=utf8 ; set character_set_connection=gbk;   set character_set_result=utf8;

执行会成功,但是查询乱码,且根据文首的描述set character_set_client=utf8 ;应该会出错才对,但是语句是成功了,只是乱码而已

 

--------------先到这了,休息

                            client =utf8        client =gbk   

   connction= utf8     报错                      正常   

  connction=gbk      乱码(预期报错)         正常

 

------------在(二)https://blog.csdn.net/weixin_42240941/article/details/116698943里面继续
                 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值