关于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 02 PHP
PHP学习 运算符与运算符优先级
Jun 15 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
php之XML转数组函数的详解
Jun 07 PHP
php curl选项列表(超详细)
Jul 01 PHP
PHP中redis的用法深入解析
Feb 20 PHP
一个显示效果非常不错的PHP错误、异常处理类
Mar 21 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
php注册和登录界面的实现案例(推荐)
Oct 24 PHP
Yii2单元测试用法示例
Nov 12 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
PHP4.04简明安装
2006/10/09 PHP
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
JavaScript闭包详解
2015/02/02 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
Python学习资料
2007/02/08 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
详解Python 函数如何重载?
2019/04/23 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
python找出因数与质因数的方法
2019/07/25 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
Python表达式的优先级详解
2020/02/18 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
《长相思》听课反思
2014/04/10 职场文书
美食节策划方案
2014/05/26 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
2014年建筑工作总结
2014/11/26 职场文书
Django如何与Ajax交互
2021/04/29 Python
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
Android中View.post和Handler.post的关系
2022/06/05 Java/Android