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

Sử dụng utf8mb4 với php và mysql

utf8 của MySQL mã hóa không phải là không UTF-8 thực tế. Đó là một mã hóa tương tự như UTF-8, nhưng chỉ hỗ trợ một tập hợp con của những gì UTF-8 hỗ trợ. utf8mb4 thực tế UTF-8. Sự khác biệt này là chi tiết triển khai nội bộ của MySQL. Cả hai đều trông giống như UTF-8 về mặt PHP. Cho dù bạn sử dụng utf8 hoặc utf8mb4 , PHP sẽ nhận UTF-8 hợp lệ trong cả hai trường hợp.

Điều bạn cần đảm bảo là mã hóa kết nối giữa PHP và MySQL được đặt thành utf8mb4 . Nếu nó được đặt thành utf8 , MySQL sẽ không hỗ trợ tất cả các ký tự. Bạn đặt mã hóa kết nối này bằng mysql_set_charset() , bộ ký tự PDO charset Tham số kết nối DSN hoặc bất kỳ phương thức nào khác phù hợp với API cơ sở dữ liệu của bạn mà bạn lựa chọn.

mb_internal_encoding chỉ cần đặt giá trị mặc định cho $encoding tham số tất cả mb_* chức năng có. Nó không liên quan gì đến MySQL.

UTF-8 và UTF-32 khác nhau về cách chúng mã hóa các ký tự. UTF-8 sử dụng tối thiểu 1 byte cho một ký tự và tối đa là 4. UTF-32 luôn luôn sử dụng 4 byte cho mọi ký tự. UTF-16 sử dụng tối thiểu 2 byte và tối đa là 4.
Do độ dài thay đổi, UTF-8 có một chút chi phí nhỏ. Một ký tự có thể được mã hóa thành 2 byte trong UTF-16 có thể lấy 3 hoặc 4 trong UTF-8; mặt khác, UTF-16 không bao giờ sử dụng ít hơn hơn 2 byte. Nếu bạn đang lưu trữ nhiều văn bản châu Á, UTF-16 có thể sử dụng ít bộ nhớ hơn. Nếu hầu hết văn bản của bạn là tiếng Anh / ASCII, UTF-8 sử dụng ít dung lượng hơn. UTF-32 luôn sử dụng nhiều bộ nhớ nhất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách cải thiện hiệu suất AWS của MySQL gấp 2 lần trên Amazon RDS với cùng chi phí

  2. PDO fetch:Nhóm tất cả các cặp khóa-giá trị vào mảng assoc

  3. Nhận chuỗi truy vấn MySQL đầy đủ khi chèn hoặc cập nhật

  4. Mô hình cơ sở dữ liệu cho một thực thể yếu

  5. Định dạng mảng PHP cho mệnh đề SQL IN