Maison  >  Article  >  développement back-end  >  Explication détaillée de la différence entre utf8 et utf8mb4

Explication détaillée de la différence entre utf8 et utf8mb4

coldplay.xixi
coldplay.xixiavant
2020-06-13 17:56:407878parcourir

Explication détaillée de la différence entre utf8 et utf8mb4

La différence entre utf8 et utf8mb4

1 Introduction

MySQL a ajouté cet encodage utf8mb4 après 5.5.3, mb4. signifie la plupart des octets 4, spécialement conçus pour être compatibles avec l'Unicode à quatre octets. utf8mb4 est un surensemble de utf8, et 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. 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. (inconvénients de l'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 l'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, tels que les symboles emoji, qui sont les petites expressions du visage jaune que nous envoyons habituellement lorsque nous discutons. L'apparence de ces personnages n'est plus fondamentalement la même. idem. Parmi les caractères Unicode plats, il était impossible d'utiliser le stockage utf8 dans MySQL, donc MySQL 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 le codage utf8mb4 pour les stocker afin que la base de données ait une meilleure compatibilité, mais cette conception consommera plus d'espace de stockage.

Tutoriel recommandé : "php du débutant à compétent"

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