如果未在连接字符串中指定字符集,则根据Designing Hardware For Surprise Removal Under Windows XP中给出的示例,使用哪个字符集?
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
charset可以,也可能应该总是在字符串中指定,如下所示:
$dbh = new PDO('mysql:host=localhost;dbname=test;charset=utf8', $user, $pass);
但是,如果没有指定使用什么字符集?
答案 0 :(得分:-1)
如果您使用的是MariaDB,则可以使用此查询检查连接的字符集(当然使用连接):
SELECT VARIABLE_NAME, SESSION_VALUE
FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE
VARIABLE_NAME LIKE 'character_set_c%' OR
VARIABLE_NAME LIKE 'character_set_re%' OR
VARIABLE_NAME LIKE 'collation_c%';
从https://mariadb.com/kb/en/library/set-names/
PDO将为服务器使用默认字符集,默认情况下为latin1。可以在my.ini
character-set-server=utf8
collation-server=utf8_general_ci
运行上面的查询应该将所有结果保存在utf8中。