Adres e-mail to fragment tekstu. Dlatego nie używaj binarnych , użyj tekstu.
Utf8 wydaje się być dobrym wyborem. Nie jestem pewien, jakie znaki są obsługiwane w adresach e-mail, ale można się spodziewać, że w przyszłości będzie coraz więcej dozwolonych znaków Unicode. Zwłaszcza jeśli używasz utf8 w innym miejscu w swojej bazie danych, nie musisz przełączać się z jednego kodowania na inne, po prostu używaj utf8 do wszystkiego.
Jeśli chodzi o wybór między utf8_bin , utf8_unicode_ci i utf8_general_ci , różnica polega tylko na zestawieniu. Oznacza to, że ma to znaczenie przy porównywaniu ciągów.
Teraz musisz wybrać między tym, co jest dozwolone, a tym, co jest normalne. Zwykle w adresach e-mail nie jest rozróżniana wielkość liter, ale może być też rozróżniana wielkość liter.
Jeśli więc używasz unikalnego indeksu w kolumnie e-mail i chcesz zezwolić na adresy e-mail różniące się tylko wielkością liter, powinieneś użyć utf8_bin , ponieważ sortowanie kończące się na _ci oznacza „bez uwzględniania wielkości liter”.
Jeśli używasz unikalnego indeksu i chcesz uniknąć e-maili różniących się tylko wielkością liter, użyj utf8_unicode_ci .
Biorąc to pod uwagę, używam utf8_unicode_ci . Chcę, aby baza danych była w stanie rozpoznać [email protected] i [email protected] jako ten sam adres. Jest to o wiele bardziej przydatne niż umożliwienie adresów z tymi samymi znakami i różnymi wielkościami liter.