关于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批量删除数据
Jan 18 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
Aug 07 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
php加速器eAccelerator的配置参数、API详解
May 05 PHP
跟我学Laravel之安装Laravel
Oct 15 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 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 stream_context_create()作用和用法分析
2011/03/29 PHP
PHP面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
php数组使用规则分析
2015/02/27 PHP
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
对于Python的Django框架部署的一些建议
2015/04/09 Python
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
Python爬虫抓取指定网页图片代码实例
2020/07/24 Python
python实现学生管理系统开发
2020/07/24 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
超级搞笑检讨书
2014/01/15 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
交通安全教育心得体会
2016/01/15 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python