Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est le meilleur jeu de caractères pour le champ e-mail ?

Une adresse e-mail est un morceau de texte. Par conséquent, n'utilisez pas de binaire , utilisez du texte.

Utf8 semble être un bon choix. Je ne sais pas quels caractères sont pris en charge pour les adresses e-mail, mais on peut s'attendre à ce qu'il y ait de plus en plus de caractères Unicode autorisés à l'avenir. Surtout si vous utilisez utf8 ailleurs dans votre base de données, vous n'avez pas besoin de passer d'un encodage à un autre, utilisez simplement utf8 pour tout.

Quant au choix entre utf8_bin , utf8_unicode_ci et utf8_general_ci , la différence n'est que la collation. Cela signifie que cela fait une différence lors de la comparaison des chaînes.

Maintenant, ici, vous devez choisir entre ce qui est autorisé et ce qui est normal. Normalement, les adresses e-mail ne sont pas sensibles à la casse, mais elles peuvent être sensibles à la casse.

Donc, si vous utilisez un index unique sur votre colonne e-mail et que vous souhaitez autoriser les adresses e-mail ne différant que par leur capitalisation, vous devez utiliser utf8_bin , puisque les classements se terminant par _ci signifient "insensible à la casse".

Si vous utilisez un index unique et souhaitez éviter que les e-mails ne diffèrent que par leur capitalisation, utilisez alors utf8_unicode_ci .

Cela étant dit, j'utilise utf8_unicode_ci . Je veux que la base de données puisse reconnaître [email protected] et [email protected] comme la même adresse. C'est beaucoup plus utile que d'autoriser la possibilité d'adresses avec les mêmes caractères et des majuscules différentes.