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