php で MySQL(mariaDB)にアクセスすると文字化けをする
いまどき文字化けするなんて思わなかった。古いデータベースだし mysql 関数でやってるやつだからなぁ
set name
しなくても PDO のドライバの初期化のタイミングで文字コードを指定できるようになっている。
対策
<?php $opts = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', ); $dsn = 'mysql:host=example.com;dbname=my_db', // $pdo = new PDO( $dsn, 'root', 'pass', $opts);
ペアになってるもの
mysqli_query mysql_query で
<?php $sqlstr = "set NAME utf8"; mysqli_query( $dbh, $sqlstr );
MySQLのテーブル設定はこんな感じ。
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci