Bạn có thực sự vẫn đang sử dụng PHP> =phiên bản 3.6 và <5.3.6 không?
Giả sử bạn có 5.3.6 trở lên ...
Bộ ký tự và PDO_MYSQL DSN nói rằng bạn nên sử dụng
$pdo = new PDO("mysql:host=localhost;dbname=mydb;charset=utf8",
'my_user', 'my_pass');
Và ngụ ý (không đủ rõ ràng) rằng utf8
nên được thay thế bằng utf8mb4
nếu thích hợp.
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
không tốt bằng, nhưng là giải pháp thay thế trước 5.3.6.
Tôi nghĩ rằng "nguy hiểm" là một từ quá mạnh, ngay cả trước 5.3.6.
Một kỹ thuật liên quan:Sử dụng init_command = SET NAMES ...
trong my.cnf
tệ lắm bởi vì init_command
không được thực thi khi kết nối bằng root
.
utf8mb4
là CHARACTER SET
ưa thích cho UTF-8 vì nó bao gồm Biểu tượng cảm xúc và một số ký tự Trung Quốc bị thiếu trong utf8
. Bộ ký tự đó có sẵn bắt đầu với MySQL phiên bản 5.5.3.