Ci sono due diversi set di caratteri in questione:
- la codifica in cui MySQL presume che le stringhe vengano inviate dal client (
character_set_client
); e - la codifica in cui MySQL invierà le sue risposte (
character_set_results
).
Per accertare il valore corrente di queste variabili utilizzando PDO, è possibile recuperare i risultati del relativo SHOW VARIABLES
dichiarazione; ad esempio:
$qry = $db->query("SHOW VARIABLES LIKE 'character_set_client'");
La documentazione per mysql_client_encoding()
è alquanto ambiguo, in quanto afferma:
Tuttavia, non esiste una tale variabile di sistema del server:quindi non sono sicuro di quale restituirebbe.
Infine, invece di impostare un MYSQL_ATTR_INIT_COMMAND
, puoi specificare il set di caratteri desiderato nel DSN (come menzionato in il manuale
):
$db = new PDO("mysql:dbname=$db;host=$host;charset=$charset", $user, $password);