Det är två olika teckenuppsättningar det handlar om:
- kodningen där MySQL antar att strängar skickas av klienten (
character_set_client
); och - kodningen som MySQL skickar sina svar i (
character_set_results
).
För att fastställa det aktuella värdet av dessa variabler med PDO kan du hämta resultaten av den relevanta SHOW VARIABLES
påstående; till exempel:
$qry = $db->query("SHOW VARIABLES LIKE 'character_set_client'");
Dokumentationen för mysql_client_encoding()
är något tvetydig, eftersom det står:
Det finns dock ingen sådan serversystemvariabel:så jag är inte säker på vilken den skulle returnera.
Slutligen, istället för att ställa in en MYSQL_ATTR_INIT_COMMAND
, kan du ange önskad teckenuppsättning i DSN (som nämnts i manualen
):
$db = new PDO("mysql:dbname=$db;host=$host;charset=$charset", $user, $password);