PDO を初期化するときに、 charset=UTF8 と charset=UTF8MB4 のどちらにすればよいですか?
これが私の初期化です:
$dsn = 'mysql:host=example.com;dbname=testdb;port=3306;charset=UTF8';
$dbh = new \Pdo($dsn, 'username', 'pass');
$dbh->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
しかし、dsn は次のようにすべきです:
$dsn = 'mysql:host=example.com;dbname=testdb;port=3306;charset=UTF8MB4';
mysql データベースのデフォルトの文字セットが UTF8MB4 の場合。
ベストアンサー1
使用すべきutf8mb4PDO とデータベース構造用です。
$dsn='mysql:host=example.com;dbname=testdb;port=3306;charset=utf8mb4';
可能であれば、ページの文字エンコーディングも忘れずに設定してください。PHP の例:
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');