Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaka jest różnica między zestawami znaków utf8mb4 i utf8 w MySQL?

UTF-8 to kodowanie o zmiennej długości. W przypadku UTF-8 oznacza to, że przechowywanie jednego punktu kodowego wymaga od jednego do czterech bajtów. Jednak kodowanie MySQL o nazwie "utf8" (alias "utf8mb3") przechowuje tylko maksymalnie trzy bajty na punkt kodowy.

Tak więc zestaw znaków „utf8”/„utf8mb3” nie może przechowywać wszystkich punktów kodowych Unicode:obsługuje tylko zakres od 0x000 do 0xFFFF, który nazywa się „Podstawowa płaszczyzna wielojęzyczna ".Zobacz także Porównanie kodowań Unicode .

Oto co (poprzednia wersja tej samej strony pod adresem) dokumentacja MySQL musi o tym powiedzieć:

Zestaw znaków o nazwie utf8[/utf8mb3] wykorzystuje maksymalnie trzy bajty na znak i zawiera tylko znaki BMP. Od MySQL 5.5.3 zestaw znaków utf8mb4 używa maksymalnie czterech bajtów na znak, obsługuje znaki uzupełniające:

  • Dla znaku BMP, utf8[/utf8mb3] i utf8mb4 mają identyczne właściwości przechowywania:te same wartości kodu, to samo kodowanie, ta sama długość.

  • W przypadku dodatkowego znaku utf8[/utf8mb3] nie może w ogóle przechowywać znaku , podczas gdy utf8mb4 wymaga czterech bajtów do jego przechowywania. Ponieważ utf8[/utf8mb3] nie może w ogóle przechowywać znaku, nie masz żadnych dodatkowych znaków w kolumnach utf8[/utf8mb3] i nie musisz się martwić o konwersję znaków lub utratę danych podczas aktualizacji danych utf8[/utf8mb3] ze starszych wersji MySQL.

Więc jeśli chcesz, aby Twoja kolumna obsługiwała przechowywanie znaków spoza BMP (a zazwyczaj chcesz), na przykład emotikony , użyj „utf8mb4”. Zobacz także Jakie są najczęściej używane znaki Unicode inne niż BMP? .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. importowanie CSV do phpmyadmina

  2. Jak zmienić hasło do bazy danych

  3. CURTIME() Przykłady – MySQL

  4. Dlaczego wstawianie MySQL InnoDB jest tak wolne?

  5. Tabele przestawne w MySQL