Maison base de données tutoriel mysql Quelle est la différence entre l'encodage utf8 et utf8mb4 dans MySQL ?

Quelle est la différence entre l'encodage utf8 et utf8mb4 dans MySQL ?

Mar 26, 2019 am 11:26 AM
mysql

Le contenu de cet article concerne la différence entre l'encodage utf8 et utf8mb4 dans MySQL ? Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

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. Heureusement, utf8mb4 est un sur-ensemble de utf8 et aucune autre conversion n'est requise, à l'exception de 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 MySQL prend en charge l'encodage utf8 ? la longueur maximale des caractères est de 3 octets. Si un caractère de 4 octets de large est rencontré, une exception sera insérée. 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, ainsi que tout nouveau caractère Unicode, etc.

3. Source du problème

Le format UTF-8 d'origine utilise un à six octets et peut encoder jusqu'à 31 caractères. La dernière spécification UTF-8 n'utilise qu'un à quatre octets et peut coder jusqu'à 21 bits, ce qui est juste suffisant pour représenter les 17 plans Unicode.

utf8 est un jeu de caractères dans Mysql qui ne prend en charge que les caractères UTF-8 jusqu'à trois octets, qui est le plan multi-texte de base dans Unicode.

Pourquoi utf8 dans Mysql ne prend-il en charge que les caractères UTF-8 d'une longueur maximale de trois octets ?
J'y ai réfléchi pendant un moment, peut-être parce que lorsque Mysql a commencé à être développé, Unicode n'avait pas de plan auxiliaire. A cette époque, le comité Unicode rêvait encore que « 65 535 caractères suffisent pour le monde entier ». La longueur de la chaîne dans Mysql est calculée en nombre de caractères plutôt qu'en nombre d'octets. Pour le type de données CHAR, une longueur suffisante doit être réservée pour la chaîne. Lors de l'utilisation du jeu de caractères utf8, la longueur qui doit être réservée est la longueur de caractère la plus longue de utf8 multipliée par la longueur de la chaîne, donc bien sûr la longueur maximale de utf8 est limitée à 3. Par exemple, CHAR(100) Mysql réservera 300 octets. Quant à savoir pourquoi les versions ultérieures ne prennent pas en charge les caractères UTF-8 de 4 octets, je pense que l'une est pour des raisons de compatibilité ascendante, et l'autre est que les caractères en dehors du plan multilingue de base sont rarement utilisés.

Pour enregistrer des caractères UTF-8 de 4 octets dans Mysql, vous devez utiliser le jeu de caractères utf8mb4, mais il n'est pris en charge qu'après la version 5.5.3 (afficher la version : sélectionner la version ();). Je pense que pour obtenir une meilleure compatibilité, vous devriez toujours utiliser utf8mb4 au lieu de utf8. Pour les données de type CHAR, utf8mb4 consommera plus d'espace. Selon les recommandations officielles de Mysql, utilisez VARCHAR au lieu de CHAR.


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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre MySQL ne peut pas être démarré Comment résoudre MySQL ne peut pas être démarré Apr 08, 2025 pm 02:21 PM

Il existe de nombreuses raisons pour lesquelles la startup MySQL échoue, et elle peut être diagnostiquée en vérifiant le journal des erreurs. Les causes courantes incluent les conflits de port (vérifier l'occupation du port et la configuration de modification), les problèmes d'autorisation (vérifier le service exécutant les autorisations des utilisateurs), les erreurs de fichier de configuration (vérifier les paramètres des paramètres), la corruption du répertoire de données (restaurer les données ou reconstruire l'espace de la table), les problèmes d'espace de la table InNODB (vérifier les fichiers IBDATA1), la défaillance du chargement du plug-in (vérification du journal des erreurs). Lors de la résolution de problèmes, vous devez les analyser en fonction du journal d'erreur, trouver la cause profonde du problème et développer l'habitude de sauvegarder régulièrement les données pour prévenir et résoudre des problèmes.

MySQL a-t-il besoin d'Internet MySQL a-t-il besoin d'Internet Apr 08, 2025 pm 02:18 PM

MySQL peut s'exécuter sans connexions réseau pour le stockage et la gestion des données de base. Cependant, la connexion réseau est requise pour l'interaction avec d'autres systèmes, l'accès à distance ou l'utilisation de fonctionnalités avancées telles que la réplication et le clustering. De plus, les mesures de sécurité (telles que les pare-feu), l'optimisation des performances (choisissez la bonne connexion réseau) et la sauvegarde des données sont essentielles pour se connecter à Internet.

MySQL optimise-t-il les tables de verrouillage MySQL optimise-t-il les tables de verrouillage Apr 08, 2025 pm 01:51 PM

MySQL utilise des verrous partagés et des verrous exclusifs pour gérer la concurrence, fournissant trois types de verrouillage: verrous de table, verrous en ligne et verrous de page. Les verrous en ligne peuvent améliorer la concurrence et utiliser l'instruction pour la mise à jour pour ajouter des verrous exclusifs aux lignes. Les verrous pessimistes supposent des conflits et les verrous optimistes jugent les données via le numéro de version. Les problèmes de table de verrouillage communs se manifestent comme une requête lente, utilisez la commande show processList pour afficher les requêtes maintenues par la serrure. Les mesures d'optimisation incluent la sélection des indices appropriés, la réduction de la portée des transactions, les opérations par lots et l'optimisation des instructions SQL.

Comment utiliser substring_index dans mysql Comment utiliser substring_index dans mysql Apr 08, 2025 pm 02:09 PM

Dans les opérations de la base de données MySQL, le traitement des chaînes est un lien inévitable. La fonction substring_index est conçue pour cela, qui peut extraire efficacement les sous-chaînes en fonction des séparateurs. Exemple d'application de fonction substring_index L'exemple suivant montre la flexibilité et la praticité de la fonction substring_index: extraire des pièces spécifiques de l'URL par exemple, extraire le nom de domaine: selectSubString_index ('www.mysql.com' ','. ', 2); Extraire l'extension de fichier pour obtenir facilement l'extension du fichier: selectSubString_index ('file.pdf', '.', - 1); Le traitement n'existe pas

La clé principale de MySQL peut être nul La clé principale de MySQL peut être nul Apr 08, 2025 pm 03:03 PM

La clé primaire MySQL ne peut pas être vide car la clé principale est un attribut de clé qui identifie de manière unique chaque ligne dans la base de données. Si la clé primaire peut être vide, l'enregistrement ne peut pas être identifié de manière unique, ce qui entraînera une confusion des données. Lorsque vous utilisez des colonnes entières ou des UUIdes auto-incrémentales comme clés principales, vous devez considérer des facteurs tels que l'efficacité et l'occupation de l'espace et choisir une solution appropriée.

Mysql peut-il renvoyer JSON Mysql peut-il renvoyer JSON Apr 08, 2025 pm 03:09 PM

MySQL peut renvoyer les données JSON. La fonction JSON_Extract extrait les valeurs de champ. Pour les requêtes complexes, envisagez d'utiliser la clause pour filtrer les données JSON, mais faites attention à son impact sur les performances. Le support de MySQL pour JSON augmente constamment, et il est recommandé de faire attention aux dernières versions et fonctionnalités.

MySQL a-t-il besoin d'un serveur MySQL a-t-il besoin d'un serveur Apr 08, 2025 pm 02:12 PM

Pour les environnements de production, un serveur est généralement nécessaire pour exécuter MySQL, pour des raisons, notamment les performances, la fiabilité, la sécurité et l'évolutivité. Les serveurs ont généralement un matériel plus puissant, des configurations redondantes et des mesures de sécurité plus strictes. Pour les petites applications à faible charge, MySQL peut être exécutée sur des machines locales, mais la consommation de ressources, les risques de sécurité et les coûts de maintenance doivent être soigneusement pris en considération. Pour une plus grande fiabilité et sécurité, MySQL doit être déployé sur le cloud ou d'autres serveurs. Le choix de la configuration du serveur approprié nécessite une évaluation en fonction de la charge d'application et du volume de données.

Mysql et Mariadb peuvent-ils coexister Mysql et Mariadb peuvent-ils coexister Apr 08, 2025 pm 02:27 PM

MySQL et MARIADB peuvent coexister, mais doivent être configurés avec prudence. La clé consiste à allouer différents numéros de port et répertoires de données à chaque base de données et ajuster les paramètres tels que l'allocation de mémoire et la taille du cache. La mise en commun de la connexion, la configuration des applications et les différences de version doivent également être prises en compte et doivent être soigneusement testées et planifiées pour éviter les pièges. L'exécution de deux bases de données simultanément peut entraîner des problèmes de performances dans les situations où les ressources sont limitées.

See all articles