关于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脚本
Nov 26 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
php 判断是否是中文/英文/数字示例代码
Sep 30 PHP
php获取汉字首字母的函数
Nov 07 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
Codeigniter控制器controller继承问题实例分析
Jan 19 PHP
PHP调试的强悍利器之PHPDBG
Feb 22 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
Jun 17 PHP
PHP chunk_split()函数讲解
Feb 12 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简单封装了一些常用JS操作
2007/02/25 PHP
PHP 变量定义和变量替换的方法
2009/07/30 PHP
php实现分页工具类分享
2014/01/09 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
Python中多线程thread与threading的实现方法
2014/08/18 Python
python一键升级所有pip package的方法
2017/01/16 Python
深入理解Python爬虫代理池服务
2018/02/28 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
Django实现表单验证
2018/09/08 Python
python实现简单井字棋小游戏
2020/03/05 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
JBL英国官网:JBL UK
2018/07/04 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
2019单位介绍信怎么写
2019/06/24 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android