Этот ответ устарел.Для полной поддержки смайликов см. этот ответ .
В качестве набора символов, если возможно, определенно UTF-8.
Как сопоставление - это немного неприятно для языков со специальными символами.Существуют различные типы сопоставлений.Все они могут хранить все умлауты и другие символы, но отличаются в том, как они относятся к умлаутам в сравнениях, т. Е. Является ли
u = ü
истинным или ложным;и в сортировке (где в алфавитах умлауты расположены в порядке сортировки).
Короче говоря, ваша лучшая ставка - либо
utf8_unicode_ci
Это позволяет осуществлять поиск без учета регистра;Он обрабатывает ß
как ss
и использует сортировку DIN-1.К сожалению, как и все недвоичные параметры сортировки Unicode, он обрабатывает u = ü
, что является ужасным неудобством, поскольку поиск по «Muller» также возвращает «Müller».Вам придется обойти это, установив сопоставление с умлаутом в реальном времени.
или utf8_bin
В этом сопоставлении нет проблемы u = ü
, но возможен только поиск с учетом регистра.
Я неполностью уверен, есть ли какие-либо другие побочные эффекты при использовании двоичного сопоставления;Я задал вопрос об этом здесь .
Эта страница руководства mySQL дает хороший обзор различных сопоставлений и последствий, которые они приносят в повседневном использовании.
Здесь - общий обзор доступных параметров сортировки в mySQL.