初始化PDO时 - 我应该这样做:charset = UTF8或charset = UTF8MB4?

Dan*_*boy 16 mysql pdo character-encoding

初始化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);
Run Code Online (Sandbox Code Playgroud)

但是,如果dsn是这样的:

$dsn = 'mysql:host=example.com;dbname=testdb;port=3306;charset=UTF8MB4';
Run Code Online (Sandbox Code Playgroud)

如果mysql数据库有一个默认的字符集UTF8MB4.

Nic*_*ick 36

您应该将utf8mb4用于PDO和数据库结构.

$dsn='mysql:host=example.com;dbname=testdb;port=3306;charset=utf8mb4';
Run Code Online (Sandbox Code Playgroud)

如果可能,请不要忘记设置页面的字符编码.PHP示例:

mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
Run Code Online (Sandbox Code Playgroud)