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.comtruehttp://www.bkjia.com/PHPjc/326406.html技術記事 mysql リンクが確立されたら、次のようにエンコーディングを設定します: 次のようにコードをコピーします: mysql_query("SETcharacter_set_connection=" . $GLOBALS['charset'] . ",character_set_results="...