Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è la differenza tra i set di caratteri utf8mb4 e utf8 in MySQL?

UTF-8 è una codifica a lunghezza variabile. Nel caso di UTF-8, ciò significa che la memorizzazione di un punto di codice richiede da uno a quattro byte. Tuttavia, la codifica di MySQL chiamata "utf8" (alias di "utf8mb3") memorizza solo un massimo di tre byte per punto di codice.

Quindi il set di caratteri "utf8"/"utf8mb3" non può memorizzare tutti i punti di codice Unicode:supporta solo l'intervallo da 0x000 a 0xFFFF, chiamato "Aereo multilingue di base ".Vedi anche Confronto delle codifiche Unicode .

Questo è ciò che (una versione precedente della stessa pagina su) la documentazione di MySQL ha da dire a riguardo:

Il set di caratteri denominato utf8[/utf8mb3] utilizza un massimo di tre byte per carattere e contiene solo caratteri BMP. A partire da MySQL 5.5.3, il set di caratteri utf8mb4 utilizza un massimo di quattro byte per carattere supporta caratteri supplementari:

  • Per un carattere BMP, utf8[/utf8mb3] e utf8mb4 hanno caratteristiche di archiviazione identiche:stessi valori di codice, stessa codifica, stessa lunghezza.

  • Per un carattere supplementare, utf8[/utf8mb3] non può memorizzare affatto il carattere , mentre utf8mb4 richiede quattro byte per memorizzarlo. Poiché utf8[/utf8mb3] non può memorizzare affatto il carattere, non hai caratteri supplementari nelle colonne utf8[/utf8mb3] e non devi preoccuparti di convertire caratteri o perdere dati quando aggiorni i dati utf8[/utf8mb3] da versioni precedenti di MySQL.

Quindi, se vuoi che la tua colonna supporti la memorizzazione di caratteri che si trovano al di fuori del BMP (e di solito lo desideri), come emoji , usa "utf8mb4". Vedi anche Quali sono i caratteri Unicode non BMP più comuni nell'uso effettivo? .