初始化 PDO 时——我应该这样做:charset=UTF8 还是 charset=UTF8MB4?
when initializing PDO - should I do: charset=UTF8 or 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。
您应该为 PDO 和您的数据库结构使用 utf8mb4。
$dsn='mysql:host=example.com;dbname=testdb;port=3306;charset=utf8mb4';
如果可能,也不要忘记设置网页的字符编码。 PHP 示例:
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
初始化 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');