本記事のソースコードの利用によって生じた損害について、当方は一切の責任を負いません。ご自身の判断と責任のもとで参照・ご利用ください。
この記事は最終更新から6年以上経過しています。
こちらの環境では問題なく表示されるので、相手のサーバーだと文字化けが発生する現象に悩まされましたが、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"));