Има два различни набора от символи, които се разглеждат:
- кодирането, в което MySQL приема, че низовете се изпращат от клиента (
character_set_client
); и - кодирането, в което MySQL ще изпраща своите отговори (
character_set_results
).
За да установите текущата стойност на тези променливи с помощта на PDO, можете да извлечете резултатите от съответния SHOW VARIABLES
изявление; например:
$qry = $db->query("SHOW VARIABLES LIKE 'character_set_client'");
Документацията за mysql_client_encoding()
е малко двусмислено, както се казва:
Въпреки това, такава сървърна системна променлива не съществува:така че не съм сигурен коя би върнала.
И накрая, вместо да задавате MYSQL_ATTR_INIT_COMMAND
, можете да посочите желания набор от знаци в DSN (както е споменато в ръководството
):
$db = new PDO("mysql:dbname=$db;host=$host;charset=$charset", $user, $password);