background image

 

mysql 字符集设置了 character_set_client=binary 

gbk 情况下会出现表描述是乱码的情况

今天在处理 bug 的时候,又发现一个奇怪的问题,在设置 mysql 的编码为 gbk 的情况下,
发现建立出来的表,凡是表结构无论是字段还是表结构描述是中文的时候,建立出来的
表结构描述是乱码,经过排查原来是 character_set_client=binary 惹的祸
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` (