建站软件 优化软件 编程软件 网页辅助 站群程序 网站程序 图像处理 资源教程 字体下载 推荐软件


您的位置:首页 > MYSQL学习 > mysql编码机制认识

mysql编码机制认识

时间:2015-05-26 20:14:27  来源:免费模板网 作者:风雪 阅读次数 tags编码机制

一般在MYSQL使用中文查询 都是用 set NAMES character

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> SET character_set_client = x; mysql> SET character_set_results = x; mysql> SET character_set_connection = x; 

 

而DISCUZ里面是 

@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指定的编码解释执行. 

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

当SQL执行完毕像客户端返回数据的时候,会把数据从字段指定的编码转换为character_set_results指定的编码,如果character_set_results=NULL 则不做任何转换动作,(注意这里设置为NULL不等于没有设置,没有设置的时候MySQL会继承全局设置), 

工作中比较有用的就是利用MySQL进行转码、不同编码的数据库之间共用数据。

本文地址:https://www.freemoban.com/mysql/2015/0526/1961.html

猜你喜欢
栏目推荐
模板推荐

Copyright:www.freemoban.com 免费模板网 All Rights Reserved 网站备案:辽ICP备19014872号-2   辽公网安备 21010602000376号  辽公网安备:42900402000182号

免责声明:本站部分资源来自互联网收集,版权归原创者所有,如果侵犯了你的权益,我们会及时删除侵权内容,联系QQ:1615187561 谢谢合作!