Có hai bộ ký tự khác nhau đang được đề cập:
- mã hóa trong đó MySQL giả định các chuỗi được gửi bởi máy khách (
character_set_client
); và - mã hóa trong đó MySQL sẽ gửi phản hồi của nó (
character_set_results
).
Để xác định giá trị hiện tại của các biến này bằng PDO, bạn có thể tìm nạp kết quả của SHOW VARIABLES
bản tường trình; ví dụ:
$qry = $db->query("SHOW VARIABLES LIKE 'character_set_client'");
Tài liệu cho mysql_client_encoding()
hơi mơ hồ, như nó nói:
Tuy nhiên, không có biến hệ thống máy chủ nào như vậy tồn tại:vì vậy tôi không chắc nó sẽ trả về biến nào.
Cuối cùng, thay vì đặt MYSQL_ATTR_INIT_COMMAND
, bạn có thể chỉ định bộ ký tự mong muốn của mình trong DSN (như đã đề cập trong hướng dẫn sử dụng
):
$db = new PDO("mysql:dbname=$db;host=$host;charset=$charset", $user, $password);