Ada dua set karakter berbeda yang dipermasalahkan:
- pengkodean di mana MySQL mengasumsikan string dikirim oleh klien (
character_set_client
); dan - pengkodean di mana MySQL akan mengirimkan tanggapannya (
character_set_results
).
Untuk memastikan nilai variabel ini saat ini menggunakan PDO, Anda dapat mengambil hasil SHOW VARIABLES
penyataan; misalnya:
$qry = $db->query("SHOW VARIABLES LIKE 'character_set_client'");
Dokumentasi untuk mysql_client_encoding()
agak ambigu, seperti yang dinyatakan:
Namun, tidak ada variabel sistem server seperti itu:jadi saya tidak yakin variabel mana yang akan dikembalikan.
Terakhir, daripada menyetel MYSQL_ATTR_INIT_COMMAND
, Anda dapat menentukan set karakter yang diinginkan di DSN (seperti yang disebutkan di panduan
):
$db = new PDO("mysql:dbname=$db;host=$host;charset=$charset", $user, $password);