Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Các ký tự đặc biệt trong PHP / MySQL

Tôi chỉ muốn cung cấp thêm một số chi tiết về giải pháp được đề xuất bởi vartec Đây là (tùy thuộc vào cài đặt MySQL của bạn) giải pháp chính xác nhất cho vấn đề của bạn. href ="https://dev.mysql.com/doc/refman/5.1/en/charset.html"> Chương 9.1 "Hỗ trợ bộ ký tự" . Trong trường hợp của bạn, đặc biệt là 9.1.4. "Bộ ký tự kết nối và ảnh ghép" sẽ phù hợp nhất.

Nói một cách ngắn gọn:MySQL phải biết bộ ký tự / mã hóa ứng dụng khách của bạn (nói từ nhân vật cơ sở dữ liệu đó là tập lệnh PHP của bạn) đang mong đợi vì nó sẽ chuyển mã tất cả dữ liệu chuỗi từ bộ ký tự / mã hóa bên trong được xác định tại máy chủ-, cơ sở dữ liệu-, bảng- hoặc cấp cột vào bộ ký tự kết nối / mã hóa. Bạn đang sử dụng UTF-8 ở phía máy khách, vì vậy phải cho MySQL biết rằng bạn sử dụng UTF-8. Điều này được thực hiện bằng lệnh MySQL SET NAMES 'utf8' phải được gửi dưới dạng truy vấn đầu tiên khi mở kết nối. Tùy thuộc vào cài đặt của bạn và trên thư viện máy khách MySQL mà bạn sử dụng trong tập lệnh PHP, điều này có thể được thực hiện tự động trên mỗi kết nối.

Nếu bạn sử dụng PDO thì chỉ cần đặt một thông số cấu hình

$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");

Sử dụng mysqli để thay đổi bộ ký tự / mã hóa máy khách thậm chí còn đơn giản hơn:

$mysqli = new mysqli("localhost", "user", "password", "db");
$mysqli->set_charset("utf8");

Tôi hy vọng điều đó sẽ giúp làm cho toàn bộ điều dễ hiểu hơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Giống như nhiều giá trị

  2. Cách lưu trữ Ký tự Emoji trong Cơ sở dữ liệu MySQL

  3. Cột không xác định MySQL trong mệnh đề ON

  4. Cách cấu hình Tomcat để kết nối với MySQL

  5. Neo4j - Nhập dữ liệu từ tệp CSV bằng Cypher