php PDO连接字符串中的默认字符集是什么?

时间:2017-11-30 11:22:05

标签: php pdo

如果未在连接字符串中指定字符集,则根据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);

但是,如果没有指定使用什么字符集?

1 个答案:

答案 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中。