Maison  >  Article  >  développement back-end  >  Simple et clair ! La différence entre utf8 et utf8mb4

Simple et clair ! La différence entre utf8 et utf8mb4

silencement
silencementavant
2020-01-25 00:14:035340parcourir

Simple et clair ! La différence entre utf8 et utf8mb4

1. Introduction

MySQL a ajouté le codage utf8mb4 après 5.5.3 signifie la plupart des octets 4, qui est spécialement conçu pour être compatible avec quatre octets. utf8mb4 est un sur-ensemble de utf8

Aucune autre conversion n'est requise sauf changer l'encodage en utf8mb4. Bien entendu, pour économiser de l'espace, il suffit généralement d'utiliser utf8.

2. Description du contenu

Comme mentionné ci-dessus, puisque utf8 peut stocker la plupart des caractères chinois, pourquoi devrions-nous utiliser utf8mb4 Il s'avère que la longueur maximale de caractères de l'encodage utf8 prise en charge par MySQL est de 3 ? caractères., tels que

, une exception sera insérée si un caractère de 4 octets de large est rencontré. Le caractère Unicode maximum pouvant être codé par UTF-8 à trois octets est 0xffff, qui est le plan

multilingue de base (BMP) en Unicode. En d'autres termes, tous les caractères Unicode qui ne figurent pas dans le plan multitexte de base ne peuvent pas être stockés à l'aide du jeu de caractères utf8 de Mysql. Y compris les expressions Emoji (Emoji

est un encodage Unicode spécial, courant sur les téléphones iOS et Android), de nombreux caractères chinois peu courants et tout nouveau caractère Unicode, etc. (manque de

point d'utf8) .

Habituellement, lorsque les ordinateurs stockent des caractères, ils allouent de l'espace de stockage en fonction de différents types de caractères et méthodes d'encodage. Par exemple, les méthodes d'encodage suivantes :

①Dans l'encodage ASCII, une lettre anglaise (indépendamment des majuscules et des minuscules) occupe un octet d'espace et un caractère chinois occupe deux octets d'espace. . Une séquence de nombres binaires, lorsqu'elle est stockée sous forme d'unité numérique dans un ordinateur, est généralement un nombre binaire de 8 bits, converti en décimal. La valeur minimale est 0 et la valeur maximale est 255.

②Dans l'encodage UTF-8, un caractère anglais occupe un octet d'espace de stockage et un caractère chinois (y compris le chinois traditionnel) occupe trois octets d'espace de stockage.

③Dans l'encodage Unicode, un caractère anglais occupe deux octets d'espace de stockage, et un caractère chinois (y compris le chinois traditionnel) occupe deux octets d'espace de stockage.

④En encodage UTF-16, le stockage d'un caractère alphabétique anglais ou d'un caractère chinois nécessite 2 octets d'espace de stockage (certains caractères chinois dans la zone d'extension Unicode nécessitent 4 octets pour être stockés).

⑤Dans l'encodage UTF-32, le stockage de n'importe quel caractère dans le monde nécessite 4 octets d'espace de stockage.

Puisque utf8 est compatible avec la plupart des caractères, pourquoi étendre utf8mb4 ?

Avec le développement d'Internet, de nombreux nouveaux types de caractères ont été produits, comme les symboles emoji, qui sont les petites expressions de visage jaune que nous envoyons habituellement lorsque nous discutons

.

ne fait pas partie des caractères Unicode multi-plans de base, ce qui rend impossible l'utilisation du stockage utf8 dans MySQL, puis a étendu les caractères utf8 et ajouté l'encodage utf8mb4.

Par conséquent, si vous souhaitez permettre aux utilisateurs d'utiliser des symboles spéciaux lors de la conception d'une base de données, il est préférable d'utiliser l'encodage utf8mb4 pour le stockage, afin que la base de données ait une meilleure compatibilité, mais cette conception

entraîne des coûts plus élevés. Beaucoup d'espace de stockage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer