MySQL 编码机制

时间:2024-01-14 23:52:38 

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进行转码、不同编码的数据库之间共用数据。

标签:MySQL,编码机制
0
投稿

猜你喜欢

  • 使用Python实现企业微信通知功能案例分析

    2022-12-26 05:03:48
  • SQL Server与Oracle数据库在安全性上的异同

    2009-02-01 14:49:00
  • Python发送手机动态验证码代码实例

    2021-10-18 23:42:32
  • 使用Go HTTP客户端打造高性能服务

    2024-05-05 09:28:29
  • 用代码帮你了解Python基础(2)

    2022-01-04 23:42:40
  • ASP 常见对象总结(熟悉一下利用以后的开发使用)

    2011-03-07 10:57:00
  • Oracle捕获问题SQL解决CPU过渡消耗

    2010-07-21 13:14:00
  • 如何提升JavaScript的运行速度(递归篇)

    2010-05-17 13:30:00
  • python的sys.path模块路径添加方式

    2021-04-06 05:52:30
  • 如何禁止搜索引擎收录你的网站

    2008-10-20 12:57:00
  • 30秒学会30个超实用Python代码片段【收藏版】

    2021-08-04 17:13:32
  • Python中字典和集合学习小结

    2021-04-03 11:01:27
  • Python 按字典dict的键排序,并取出相应的键值放于list中的实例

    2022-01-26 16:48:46
  • Python简单计算文件MD5值的方法示例

    2023-06-07 06:06:42
  • 浅谈Python的list中的选取范围

    2023-06-23 01:58:01
  • 如何前后翻阅聊友们的发言?

    2010-01-18 20:49:00
  • Python面向对象特殊属性及方法解析

    2022-05-19 15:16:06
  • MySQL之批量插入的4种方案总结

    2024-01-19 16:13:11
  • MySQL的一级防范检查列表

    2011-12-14 18:39:22
  • Python实现爬取逐浪小说的方法

    2022-05-26 22:31:29
  • asp之家 网络编程 m.aspxhome.com