关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况


Posted in PHP onJanuary 06, 2013

mysql链接建立之后,通过如下方式设置编码:

mysql_query("SET character_set_connection=" . $GLOBALS['charset'] . ",character_set_results=" . $GLOBALS['charset'] . ",character_set_client=binary", $this->link);

然而建立出来的表结构描述竟然是乱码:
mysql> show create table nw_admin_config\G 
*************************** 1. row *************************** 
Table: nw_admin_config 
Create Table: CREATE TABLE `nw_admin_config` ( 
`name` varchar(30) NOT NULL DEFAULT '' COMMENT '��������', 
`namespace` varchar(15) NOT NULL DEFAULT 'global' COMMENT '���������ռ�', 
`value` text COMMENT '����ֵ', 
`vtype` enum('string','array','object') NOT NULL DEFAULT 'string' COMMENT '����ֵ����', 
`description` text COMMENT '���ý���', 
PRIMARY KEY (`namespace`,`name`) 
) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='��վ���ñ�'

经过排查,发现竟然是character_set_client=binary惹的祸:
$targetDb->query("SET NAMES '{$charset}'");
mysql> show create table nw_admin_config\G 
*************************** 1. row *************************** 
Table: nw_admin_config 
Create Table: CREATE TABLE `nw_admin_config` ( 
`name` varchar(30) NOT NULL DEFAULT '' COMMENT '配置名称', 
`namespace` varchar(15) NOT NULL DEFAULT 'global' COMMENT '配置命名空间', 
`value` text COMMENT '缓存值', 
`vtype` enum('string','array','object') NOT NULL DEFAULT 'string' COMMENT '配置值类型', 
`description` text COMMENT '配置介绍', 
PRIMARY KEY (`namespace`,`name`) 
) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='网站配置表'

但是,如果我设置的字符集是UTF8的,表结构也是utf8,那么即使是使用的上面的character_set_client=binary,表结构的描述正常:
mysql> show create table nw_admin_config\G 
*************************** 1. row *************************** 
Table: nw_admin_config 
Create Table: CREATE TABLE `nw_admin_config` ( 
`name` varchar(30) NOT NULL DEFAULT '' COMMENT '配置名称', 
`namespace` varchar(15) NOT NULL DEFAULT 'global' COMMENT '配置命名空间', 
`value` text COMMENT '缓存值', 
`vtype` enum('string','array','object') NOT NULL DEFAULT 'string' COMMENT '配置值类型', 
`description` text COMMENT '配置介绍', 
PRIMARY KEY (`namespace`,`name`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='网站配置表'

而奇怪的事,乱码情况只有表结构中的描述中才存在,对于插入的数据中文却还是正常的~

网上查了character_set_client=binary都说是“大部分为了解决乱码问题而设置”,却不知,这个对表结构描述竟然反而乱码了。到底这个是什么作用呢?表结构的时候又为什么不一样呢?

PHP 相关文章推荐
一个简单的PHP投票程序源码
Mar 11 PHP
PHP 读取Postgresql中的数组
Apr 14 PHP
基于PHP生成静态页的实现方法
May 10 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
PHP获取中英混合字符串长度的方法
Jun 07 PHP
PHP把数字转成人民币大写的函数分享
Jun 30 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
php数组合并与拆分实例分析
Jun 12 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
PHP中CheckBox多选框上传失败的代码写法
Feb 13 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 #PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 #PHP
php学习笔记之面向对象编程
Dec 29 #PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 #PHP
PHP中计算字符串相似度的函数代码
Dec 29 #PHP
PHP flock 文件锁详细介绍
Dec 29 #PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
Dec 28 #PHP
You might like
比较详细PHP生成静态页面教程
2012/01/10 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
Vue精简版风格指南(推荐)
2018/01/30 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
node.js基础知识汇总
2020/08/25 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
解决pycharm界面不能显示中文的问题
2018/05/23 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
python程序输出无内容的解决方式
2020/04/09 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
决定成败的关键——创业计划书
2014/01/24 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL