PDO を初期化するとき、charset=UTF8 と charset=UTF8MB4 のどちらにすればよいですか? [重複] 質問する

PDO を初期化するとき、charset=UTF8 と charset=UTF8MB4 のどちらにすればよいですか? [重複] 質問する

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');

おすすめ記事