Quelle est la différence entre utf8 et latin1 ?
Mysql 5.1 prend en charge l'UTF-8 sur 3 octets, cependant Mysql 5.5 soutient 4 octets UTF-8 comme utf8mb4.
Quelle est la différence entre utf8 et latin1 ?
UTF-8 est prêt pour la domination du monde, Latin1 ne l'est pas.
Si vous essayez de stocker des caractères non latins comme le chinois, le japonais, l'hébreu, le russe, etc. en utilisant l'encodage Latin1, ils se retrouveront sous la forme suivante mojibake . Vous pouvez trouver le texte d'introduction de cet article utile (et encore plus si vous connaissez un peu Java).
Notez que le support complet de l'UTF-8 sur 4 octets n'a été introduit que dans MySQL 5.5. Avant cette version, il ne va que jusqu'à 3 octets par caractère, et non 4 octets par caractère. Ainsi, il ne supportait que le plan BMP et pas, par exemple, le plan Emoji. Si vous souhaitez une prise en charge complète de l'UTF-8 sur 4 octets, mettez à niveau MySQL vers au moins la version 5.5 ou optez pour un autre SGBDR comme PostgreSQL. Dans MySQL 5.5+, il s'appelle utf8mb4
.
Mysql 5.1 prend en charge l'UTF-8 sur 3 octets, cependant Mysql 5.5 soutient 4 octets UTF-8 comme utf8mb4.
C'est vrai, mais MySQL 5.5 n'était pas GA au moment où cette réponse a été postée. Elle a été publiée en décembre 2010.
@BalusC Pouvez-vous expliquer plus en détail pourquoi UTF-8 n'est pas entièrement pris en charge ? Est-ce que cela signifie que Mysql 5.1 ne peut pas stocker tous caractères unicode ?
@YoushaAleayoub L'ASCII est un codage sur un seul octet qui utilise les caractères 0 à 127, ce qui lui permet de coder deux fois moins de caractères que le latin1. Il s'agit d'un sous-ensemble strict de latin1 et de utf8, ce qui signifie que les octets 0 à 127 de latin1 et de utf8 codent les mêmes choses qu'en ASCII. Bin n'est pas un encodage. Il s'agit généralement d'une option que vous pouvez donner lors de la lecture d'un fichier, indiquant aux fonctions IO de ne pas appliquer d'encodage, mais de lire le fichier octet par octet.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Il s'agit d'encodages différents (avec un peu de caractères mis en correspondance avec des séquences d'octets communes, par exemple les caractères ASCII et de nombreuses lettres accentuées). UTF-8 est un encodage d'Unicode avec tous ses points de code ; Latin1 encode moins de 256 caractères.
0 votes
Il y a aussi latin9 qui est disponible dans les locales Linux et qui aurait pu être mentionné dans la question : fr.wikipedia.org/wiki/ISO/IEC_8859-15