Edited at

MySQLとPDOの組み合わせでcharsetを指定する

More than 1 year has passed since last update.

mysql関数の場合はmysql_set_charset関数でOK。

PDOでMySQLを使う場合は、PHP 5.3.6からDSNでcharsetを指定できるようになっているので、PDOのインスタンスを作るときにcharsetをきちんと指定してあげる。

<?php

$pdo = new PDO(
'mysql:host=yourhost;dbname=yourdb;charset=utf8mb4',
'user', 'password'
);

PHP 5.3.6より前のバージョンをどうしても使わなければいけない場合は次のようにする。

<?php

$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
);
$pdo = new PDO(
'mysql:host=yourhost;dbname=yourdb',
'user', 'password', $options
);

いつの間にかPHPのマニュアルにMySQLの文字セット指定についてのページが追加されてた。