加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql学习mysql 编码机制分析

发布时间:2020-12-12 03:09:51 所属栏目:MySql教程 来源:网络整理
导读:《Mysql学习mysql 编码机制分析》要点: 本文介绍了Mysql学习mysql 编码机制分析,希望对您有用。如果有疑问,可以联系我们。 导读:mysql编码机制:character_set_client,这是用户告诉mysql查询是用的什么字符集. character_set_connection,mysql接受到用户

《Mysql学习mysql 编码机制分析》要点:
本文介绍了Mysql学习mysql 编码机制分析,希望对您有用。如果有疑问,可以联系我们。

导读:mysql编码机制:character_set_client,这是用户告诉mysql查询是用的什么字符集. character_set_connection,mysql接受到用户查询后...

mysql编码机制:
character_set_client,这是用户告诉mysql查询是用的什么字符集.
character_set_connection,mysql接受到用户查询后,按照character_set_client将其转化为character_set_connection设定的字符集.
character_set_results,mysql将存储的数据转换成character_set_results中设定的字符集发送给用户.
discuz并没有使用set names character
set names 'x'语句与这三个语句等价:
?MYSQL学习

mysql> set character_set_client = x; mysql> set character_set_results = x; mysql> set character_set_connection = x;
?

而discuz中:
?MYSQL学习

@mysql_query("set character_set_connection=$dbcharset,character_set_results=$dbcharset,character_set_client=binary",$this->link);

set character_set_client = binary;使用二进制字符集查询
此三处的字符设定很大程度上会解决乱码问题,那么着三个设定具体有什么作用呢?
character_set_client指定的是sql语句的编码,如果设置为 binary,mysql就当二进制来处理,character_set_connection指定了mysql 用来运行sql语句的时候使用的编码,也就是说,程序发送给mysql 的sql语句,会首先被mysql从character_set_client指定的编码转换到character_set_connection指定的编码,如果character_set_clien指定的是binary,则mysql就会把sql语句按照character_set_connection指定的编码解释执行.MYSQL学习

当执行sql语句的过程中,比如向数据库中插入字段的时候,字段也有编码设置,如果字段的编码设置和character_set_connection指定的不同,则mysql 会把插入的数据转换成字段设定的编码.sql语句中的条件判断和sql插入语句的执行过程类似.MYSQL学习

当sql执行完毕像客户端返回数据的时候,会把数据从字段指定的编码转换为character_set_results指定的编码,如果character_set_results=null 则不做任何转换动作,(注意这里设置为null不等于没有设置,没有设置的时候mysql会继承全局设置),工作中比较有用的就是利用mysql进行转码、不同编码的数据库之间共用数据.MYSQL学习

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读