Hay dos juegos de caracteres diferentes en cuestión:
- la codificación en la que MySQL supone que el cliente envía las cadenas (
character_set_client
); y - la codificación en la que MySQL enviará sus respuestas (
character_set_results
).
Para determinar el valor actual de estas variables mediante PDO, puede obtener los resultados de las SHOW VARIABLES
declaración; por ejemplo:
$qry = $db->query("SHOW VARIABLES LIKE 'character_set_client'");
La documentación para mysql_client_encoding()
es algo ambiguo, ya que dice:
Sin embargo, no existe tal variable del sistema del servidor:así que no estoy seguro de cuál devolvería.
Finalmente, en lugar de establecer un MYSQL_ATTR_INIT_COMMAND
, puede especificar el conjunto de caracteres deseado en el DSN (como se menciona en in el manual
):
$db = new PDO("mysql:dbname=$db;host=$host;charset=$charset", $user, $password);