ホームページ >php教程 >php手册 >mysqlの文字セットに関してはcharacter_set_client=binaryを設定しているのですが、gbkの場合はテーブルの記述が文字化けします。

mysqlの文字セットに関してはcharacter_set_client=binaryを設定しているのですが、gbkの場合はテーブルの記述が文字化けします。

WBOY
WBOYオリジナル
2016-06-13 11:55:551554ブラウズ

mysql リンクが確立されたら、エンコーディングを次のように設定します。

コードをコピー コードは次のとおりです。


mysql_query( "SET 文字セット接続 = . $GLOBALS['charset'] . ",文字セット_クライアント = バイナリ",


しかし、作成されます テーブル構造の説明が文字化けしています:

コードをコピー コードは次のとおりです:


mysql> ; show create table nw_admin_configG
* *************************** 1. 行 *********** ********** ******
テーブル: nw_admin_config
テーブルの作成: 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 '����ֵ����',
`説明` テキスト 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_configG
******************* ******* 1. 行 ******** *******************
テーブル: nw_admin_config
テーブルの作成: 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 '構成値の型',
`説明` text COMMENT '設定の紹介',
PRIMARY KEY (`namespace`, `name`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='Website Configuration Table'


ただし、設定した文字セットが UTF8 で、テーブル構造も utf8 の場合、上記のcharacter_set_client=binary も使用され、テーブル構造の記述は通常です:

コードをコピー コードは次のとおりです:


mysql> show create table nw_admin_configG
******************* ********** 1. 行 ************** *************
テーブル: nw_admin_config
作成表: 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='Web サイト構成テーブル'


そして奇妙なことに、文字化けはテーブル構造内の説明にのみ存在しますが、挿入されたデータは中国語でも正常です〜

オンラインでcharacter_set_client=binaryを確認したところ、「ほとんど設定されている」と言われました文字化け問題を解決するには」と書いていましたが、このテーブル構造の記述が実は文字化けしていたとは知りませんでした。これは具体的に何をするのでしょうか?テーブル構造が異なるのはなぜですか?
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。