关于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 !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密
Jan 07 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
探讨:使用XMLSerialize 序列化与反序列化
Jun 08 PHP
解析yii数据库的增删查改
Jun 20 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
php自定义函数截取汉字长度
May 15 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
微信公众平台开发(五) 天气预报功能开发
Dec 03 PHP
搭建自己的PHP MVC框架详解
Aug 16 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 PHP
详解PHP用mb_string处理windows中文字符
May 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
世界上第一台立体声收音机
2021/03/01 无线电
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
在 Laravel 中动态隐藏 API 字段的方法
2019/10/25 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
js有序数组的连接问题
2013/10/01 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
vue实现与安卓、IOS交互的方法
2018/11/02 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
Python进程通信之匿名管道实例讲解
2015/04/11 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
pandas数值计算与排序方法
2018/04/12 Python
Python3爬虫学习入门教程
2018/12/11 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
Django配置文件代码说明
2019/12/04 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
sort命令的作用和用法
2013/08/25 面试题
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
大学生职业规划前言模板
2013/12/27 职场文书
什么是就业协议书
2014/04/17 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
用Python爬取某乎手机APP数据
2021/06/15 Python