mysqlの文字セットに関して、character_set_client=binaryが設定されているのですが、gbkの場合、テーブルの記述が文字化けしてしまいます_PHPチュートリアル

WBOY
リリース: 2016-07-21 15:13:41
オリジナル
852 人が閲覧しました

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_configG
****************************** 1. row * ************** *************
テーブル: 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=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 ' 設定値の型',
`説明` テキスト COMMENT '設定の概要',
PRIMARY KEY (`namespace`, `name`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='Websiteconfiguration table'

ただし、設定した文字セットが UTF8 で、テーブル構造も utf8 であるため、character_set_client= を使用しても上記のバイナリでは、テーブル構造の説明は正常です:

コードをコピーします コードは次のとおりです:
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='Websiteconfiguration table'

そして不思議なことに、文字化けはテーブル構造内の記述部分のみに存在し、しかし、挿入されたデータはまだ正常です~

ネットでcharacter_set_client=binaryを確認したところ、「ほとんど文字化け問題を解決するために設定されている」と言われましたが、これが実際にテーブル構造の記述が文字化けしているとは知りませんでした。これは具体的に何をするのでしょうか?テーブル構造が異なるのはなぜですか?

http://www.bkjia.com/PHPjc/326406.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/326406.html技術記事 mysql リンクが確立されたら、次のようにエンコーディングを設定します: 次のようにコードをコピーします: mysql_query("SETcharacter_set_connection=" . $GLOBALS['charset'] . ",character_set_results="...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート