MySQLにPDOで接続しする際の文字コード設定

電脳備忘録

こちらの環境では問題なく表示されるので、相手のサーバーだと文字化けが発生する現象に悩まされましたが、PHPのバージョンの違いが原因でした。 MySQLにPDOで接続しする際にcharset指定していたのですが、PHP5.3.6以前はcharset指定が効かないらしいですね・・・。


$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8';
$dbh = new PDO($dsn, $user, $password);

MYSQL_ATTR_INIT_COMMANDで文字コードを設定することで文字化けすることなく表示されるようになりました。


$dbh = new PDO($dsn, $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

広告

ブログの維持費に充てるでございます・・・。