php MySQL 中国語文字化けの解決策: 1. データベースまたはテーブルのエンコード形式を変更します; 2. PHP ステートメントに「mysqli_query("set names utf8");」を追加します; 3. クライアントで追加するだけです「header('charset=utf-8');」。
おすすめ:「PHP ビデオチュートリアル 」
PHP と Mysql の中国語文字化けの問題
MySQL でデータベースを構築すると、コードが文字化けすることがあります。
問題 1: データベースまたはテーブルのエンコード形式が正しくありません
データベースを作成するときは、次のコードを使用して作成します。
CREATE DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
テーブルを作成するとき:
CREATE TABLE `table_name` ( id varchar(40) NOT NULL PRIMARY KEY AUTO_INCREMENT, `UserID` varchar(40) NOT NULL default '', ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
これら 3 つの設定が完了すると、Mysql は基本的に問題なく動作します。つまり、データベースとテーブルを構築するときに同じエンコード形式が使用されます。
データベースが作成されている場合は、次の方法を使用できます:
1. デフォルトのエンコード形式を確認します:
mysql> show variables like "%char%"; +--------------------------+---------------+ | Variable_name | Value | +--------------------------+---------------+ | character_set_client | gbk | character_set_connection | gbk | | character_set_database | utf8 | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | utf8 | | character_set_system | utf8 | +--------------------------+-------------+
注: 前の 2 つを確認するには、 set names utf8 、 set names gbk を使用すると、デフォルトのエンコード形式が設定されます。ワークベンチを使用して、データベースのエンコードをより簡単に設定できます。
SET NAMES utf8 の実行の効果は、同時に次の設定を行うのと同じです:
SET character_set_client='utf8'; SET character_set_connection='utf8'; SET character_set_results='utf8';
2。テスト データベースのエンコード形式を確認します:
mysql> show create database test; +------------+------------------------------------------------------------------------------------------------+ | Database | Create Database | +------------+------------------------------------------------------------------------------------------------+ | test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gbk */ | +------------+------------------------------------------------------------------------------------------------+
3 yjdb データ テーブルのエンコーディングを確認してください。 形式:
mysql> show create table yjdb; | yjdb | CREATE TABLE `yjdb` ( `sn` int(5) NOT NULL AUTO_INCREMENT, `type` varchar(10) NOT NULL, brc` varchar(6) NOT NULL, `teller` int(6) NOT NULL, `telname` varchar(10) NOT NULL, `date` int(10) NOT NULL, `count` int(6) NOT NULL, `back` int(10) NOT NULL, PRIMARY KEY (`sn`), UNIQUE KEY `sn` (`sn`), NIQUE KEY `sn_2` (`sn`) ) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |
質問 2: PHP と Mysql の転送エンコーディングは互換性がありません。
mysqli_query(“set names utf8”);
mysql セット名を PHP に追加する必要があります。文字化けの原因を解決するためのステートメント:
http://blog.csdn.net/zsmj_2011/article/details/7943734
質問 3: クライアントのデコードの問題:
Add header('charset=utf-8'); 以上です
以上がphp mysqlの中国語文字化け問題を解決するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。