• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql中character_set_connection的功用_mysql

mysql 搞代码 7年前 (2018-06-08) 251次浏览 已收录 0个评论

mysql中character_set_connection的作用

character_set_client = x 
character_set_results = x
character_set_connection = x;

我们常用在mysql操作类中使用这三面,下面大概说下作用:

  character_set_client 客户端使用的编码,如GBK, UTF8 比如你写的sql语句是什么编码的。
  character_set_results 查询返回的结果集的编码(从数据库读取的数据是什么编码的)。
  character_set_connection 连接使用的编码

它们之前存在一个转换过程(具本的还请见手册):

character_set_client -> character_set_connection >内部操作字符集->character_set_results
见一篇文章:http://www.cnblogs.com/discuss/articles/1862248.html
如:utf8->utf8->utf8  gbk->utf8->utf8

类似于gbk->utf8->utf8这样的转换,有些同学可能有个疑问:
  character_set_client 是gbk
  character_set_connection 是utf8
  character_set_results 也是utf8
  
  为什么不滤过character_set_connection部分,而它在这个中间阶段起到一个什么样的作用。
google时,http://stackoverflow.com/questions/16082480/what-is-the-purpose-of-character-set-connection
老外也提到过样的问题,本人英语差得很,也没怎么看完,最后转而去看手册去了。

在手册中发现一句话:转换时,服务器使用character_set_connection和collation_connection系统变量。它将客户端发送的查询从character_set_client系统变量转换到character_set_connection(除非字符串文字具有象_latin1或_utf8的引介词)。collation_connection对比较文字字符串是重要的。对于列值的字符串比较,它不重要,因为列具有更高的 校对规则优先级。
请反复读下这段话,尤其是红色部分。现在说下我的理解:我们操作数据库时,大多于表有关,但是并不是说操作数据库一定要于表有关,如果使用表,则表和字段的字符集有优先,比如直接select length('中国人'),如果
character_set_connection是utf8的则输出9,如果是gbk则输出6。各位可以通过修改字符集变量测试下。我想character_set_connection存在的意义大多是类似于此类用法吧。


如有说的不对的地方,请指正下,或者有更多的说法,也请说下。

欢迎大家阅读《mysql中character_set_connection的功用_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql中character_set_connection的功用_mysql
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址