关于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 mcrypt可逆加密算法分析
Jul 19 PHP
php类中private属性继承问题分析
Nov 01 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
yii操作cookie实例简介
Jul 09 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
帝国CMS留言板回复后发送EMAIL通知客户
Jul 06 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
Yii2中DropDownList简单用法示例
Jul 18 PHP
php实现自定义中奖项数和概率的抽奖函数示例
May 26 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 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实现Soap通讯的方法
2014/11/03 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
php编程每天必学之表单验证
2016/03/01 PHP
PDO::getAttribute讲解
2019/01/28 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
javascript简易画板开发
2020/04/12 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
google广告之另类js调用实现代码
2020/08/22 Javascript
python基础教程之Filter使用方法
2017/01/17 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
数组越界问题
2015/10/21 面试题
售后服务经理岗位职责范本
2014/02/22 职场文书
教育技术职业规划范文
2014/03/04 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
留学推荐信中文范文
2015/03/26 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
民间借贷被告代理词
2015/05/23 职场文书
农村老人去世追悼词
2015/06/23 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang