初始化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。

最佳答案

对于PDO和数据库结构,应使用 utf8mb4

$dsn='mysql:host=example.com;dbname=testdb;port=3306;charset=utf8mb4';

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

mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');

关于mysql - 初始化PDO时-我应该做:charset = UTF8或charset = UTF8MB4吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31660005/

10-12 13:29