MYSQL编码

本文详细解析了MySQL中character_set_client、character_set_connection和character_set_results三个关键参数的作用及配置方法,帮助解决中文查询时出现的乱码问题。
摘要由CSDN通过智能技术生成

 

       一般在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中设定的字符集发送给用户。


       SET NAMES 'x'语句与这三个语句等价:
       mysql> SET character_set_client = x;
       mysql> SET character_set_results = x;
       mysql> SET character_set_connection = x;


       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会继承全局设置),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值