PHPの異なるバージョンPDO設定文字セット
最近PDOでMySQLを操作して、自分でMacの上でテストするのが良いです.SQLファイル、コードは一绪にサーバーに上がって、データをMySQLに书いて、中国语はすべて文字化けします.
まず、MySQLサービス側のエンコーディングを見て、すべてUTF-8で、データベース、テーブル、関連フィールドを見て、すべてutf 8_です.general_ci.
そして、コードを見て、文字セットも設定されています.
しかし、挿入されたデータの中国語部分は、依然として文字化けしている.その後、PHPでMySQLに直接接続し、一言追加しました.
挿入したデータの中国語部分は、正常に表示されています.サービス側に問題がないことを説明します.問題があるのはコードです.
本当に原因が見つからないので、ネットで探してみました.PDOはPHP 5.3.6以降のバージョンは、上記のように有効です.5.3.より低い6バージョンの場合、次の方法で設定する必要があります.
また挿入を実行して、中国語は正常に表示されました!
まず、MySQLサービス側のエンコーディングを見て、すべてUTF-8で、データベース、テーブル、関連フィールドを見て、すべてutf 8_です.general_ci.
そして、コードを見て、文字セットも設定されています.
$dns = 'mysql:dbname=sausagedb;host=127.0.0.1;charset=utf8';
$user = 'root';
$password = '111111';
$dbh = new PDO($dns, $user, $password);
しかし、挿入されたデータの中国語部分は、依然として文字化けしている.その後、PHPでMySQLに直接接続し、一言追加しました.
mysql_query("SET NAMES 'utf8'");
挿入したデータの中国語部分は、正常に表示されています.サービス側に問題がないことを説明します.問題があるのはコードです.
本当に原因が見つからないので、ネットで探してみました.PDOはPHP 5.3.6以降のバージョンは、上記のように有効です.5.3.より低い6バージョンの場合、次の方法で設定する必要があります.
$dbh = new PDO($dns, $user, $password);
$dbh->exec("set names utf8");
また挿入を実行して、中国語は正常に表示されました!