关于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应用提速面面观
Oct 09 PHP
PHP+APACHE实现用户论证的方法
Oct 09 PHP
php 404错误页面实现代码
Jun 22 PHP
php中防止恶意刷新页面的代码小结
Oct 31 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
php中获取主机名、协议及IP地址的方法
Nov 18 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
May 17 PHP
老生常谈PHP数组函数array_merge(必看篇)
May 25 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 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文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
BootStrap selectpicker
2016/06/20 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
python计算圆周率pi的方法
2015/07/11 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
python版百度语音识别功能
2019/07/09 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
面试求职的个人自我评价
2013/11/16 职场文书
六查六看自查材料
2014/02/17 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
材料员岗位职责范本
2015/04/11 职场文书
导游词之岳阳楼
2019/09/25 职场文书
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android