项目常见问题一:set names utf8;的详细作用

项目常见问题一:set names utf8;的详细作用

不多说,先上结果

一般我们要创建一个Database,都是直接执行create database xxxx;,执行SQL语句show variables like "character%";会出现以下结果:

character_set_client    | gbk
character_set_connection| gbk
character_set_results   | gbk

执行set names utf8之后,变为:

character_set_client    | utf8
character_set_connection| utf8
character_set_results   | utf8

解释

set names <charset>其实有两个作用:

  1. 告诉mysql server,客户端(P程序)提交给它的编码是什么
  2. 告诉mysql server,客户端需要的结果的编码是什么

也就是说,如果数据表使用gbk字符集,而后端Java或者PHP程序使用UTF-8编码,我们在执行查询前运行set names utf8,告诉mysql server正确编码即可,无须在程序中编码转换。这样我们以utf-8编码提交查询到mysql server,得到的结果也会是utf-8编码,省却了程序中的转换编码问题。

扩展与疑问?

一条set names utf8;是不是就已经等于set character_set_client=utf8;+ set character_set_connection=utf8;+ set character_set_results=utf8; 这三条呢?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值