Der er tale om to forskellige tegnsæt:
- den kodning, hvori MySQL antager, at strenge sendes af klienten (
character_set_client
); og - den kodning, som MySQL sender sine svar i (
character_set_results
).
For at fastslå den aktuelle værdi af disse variabler ved hjælp af PDO, kan du hente resultaterne af den relevante SHOW VARIABLES
udmelding; for eksempel:
$qry = $db->query("SHOW VARIABLES LIKE 'character_set_client'");
Dokumentationen til mysql_client_encoding()
er noget tvetydig, da der står:
Der findes dog ingen sådan serversystemvariabel:så jeg er ikke sikker på, hvilken den ville returnere.
Til sidst, i stedet for at indstille en MYSQL_ATTR_INIT_COMMAND
, kan du angive dit ønskede tegnsæt i DSN (som nævnt i manualen
):
$db = new PDO("mysql:dbname=$db;host=$host;charset=$charset", $user, $password);