关于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 MemCached高级缓存配置图文教程
Aug 05 PHP
PHPExcel读取Excel文件的实现代码
Dec 06 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
PHP小技巧之函数重载
Jun 02 PHP
PHP 导出Excel示例分享
Aug 18 PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 PHP
PHP+MySQL插入操作实例
Jan 21 PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
Jquery 自定义动画概述及示例
2013/03/29 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
python中实现定制类的特殊方法总结
2014/09/28 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
Django实现文件上传和下载功能
2019/10/06 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
生产经理的自我评价分享
2013/11/07 职场文书
前台文员的岗位职责
2013/11/14 职场文书
餐饮营销方案
2014/02/23 职场文书
师范生自我鉴定
2014/03/20 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android