UTF-8 là gì? Sự khác nhau giữa UTF8BM3 với UTF8BM4 trong MySQL

Trong khi thiết lập cấu hình cho Mysql database chắc hẳn bạn cũng sẽ có thắc mắc là: UTF-8 là gì? Sự khác nhau giữa UTF8BM3 với UTF8BM4 trong MySQL . Sao lại có 2 lựa chọn bộ mã hóa UTF-8 trong thiết lập của MySQL. Sau đây mình xin giải đáp thắc mắc và cũng chia sẻ với các bạn về 2 bộ mã UTF-8 và UTF8BM4 của MySQL .

UTF-8 là gì?

UTF-8 (8-bit Unicode Transformation Format – Định dạng chuyển đổi Unicode 8-bit) là một bộ mã hóa ký tự với chiều rộng biến thiên dành cho Unicode

Theo wikipedia

UTF-8 là một mã hóa có độ dài thay đổi. Trong trường hợp UTF-8, điều này có nghĩa là việc lưu trữ một điểm mã yêu cầu một đến bốn byte. Tuy nhiên, mã hóa của MySQL có tên là “utf8” (bí danh của “utf8mb3”) chỉ lưu trữ tối đa ba byte cho mỗi điểm mã.

Vì vậy, bộ ký tự utf8/utf8mb3 không thể lưu trữ tất cả các điểm mã Unicode: nó chỉ hỗ trợ phạm vi 0x000 đến 0xFFFF

UTF8BM3 và UTF8BM4 là gì?

  • UTF8BM4: Mã hóa UTF-8 của bộ  tự Unicode sử dụng một đến bốn byte cho mỗi ký tự.
  • UTF8BM3: Mã hóa UTF-8 của bộ  tự Unicode sử dụng một đến ba byte cho mỗi ký tự.

Sự khác nhau khi sử dụng 2 bộ mã UTF8BM3 và UTF8BM4

Bộ ký tự có tên utf8mb3 sử dụng tối đa ba byte cho mỗi ký tự và chỉ chứa các ký tự BMP. Kể từ MySQL 5.5.3, bộ ký tự utf8mb4 sử dụng tối đa bốn byte cho mỗi ký tự hỗ trợ các ký tự bổ sung:

  • Đối với một ký tự BMP, utf8mb3 utf8mb4 có các đặc điểm lưu trữ giống hệt nhau: cùng một giá trị mã, cùng mã hóa, cùng độ dài.
  • Đối với một ký tự bổ sung, utf8mb3 hoàn toàn không thể lưu trữ ký tự đó , trong khi utf8mb4 yêu cầu bốn byte để lưu trữ nó. Vì utf8mb3 hoàn toàn không thể lưu trữ ký tự, nên bạn không có bất kỳ ký tự bổ sung nào trong các cột utf8mb3 và bạn không cần lo lắng về việc chuyển đổi ký tự hoặc mất dữ liệu khi nâng cấp dữ liệu utf8mb3 từ các phiên bản cũ hơn của MySQL vì utf8mb4 tương thích hoàn toàn khi chuyển từ utf8mb3 sang.

Vì vậy, nếu bạn muốn cột của mình hỗ trợ lưu trữ các ký tự nằm bên ngoài BMP (và bạn thường muốn), chẳng hạn như biểu tượng cảm xúc , hãy sử dụng “utf8mb4“. Xem thêm Các ký tự Unicode không BMP phổ biến nhất trong sử dụng thực tế là gì? .

Trả lời 0

Your email address will not be published. Required fields are marked *