2015-07-27 6 views
8

durante l'inizializzazione di PDO: devo fare: charset = UTF8 o charset = UTF8MB4?durante l'inizializzazione di PDO: dovrei fare: charset = UTF8 o charset = UTF8MB4?

ecco la mia intialization:

  $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); 

ma dovrebbe essere questo DSN:

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

se il database MySQL è un UTF8MB4 di default charset.

risposta

16

È necessario utilizzare utf8mb4 per PDO e le strutture del database.

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

Quando possibile, non dimenticare di impostare la codifica dei caratteri delle pagine pure. Esempio di PHP:

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