Переводят ли индексы mysql UTF-8 в ASCII? - PullRequest
0 голосов
/ 22 августа 2009

Я работал с символами UTF-8 в моей базе данных и использовал функцию php inconv для перевода символов из utf-8 в ascii, прежде чем поместить их в базу данных.

Таким образом, я подумал, что я бы просто перевел запрос в ASCII, прежде чем запрашивать базу данных. Однако теперь я вижу результаты, которые заставляют меня поверить, что MySQL делает этот перевод для меня.

Кто-нибудь знает, если это правильно, и я могу пропустить весь inconv в php (который не очень эффективен в любом случае).

В качестве примера, поиск «lësci» возвращает «Lesci», поэтому я полагаю, что перевод в ASCII происходит в какой-то момент.

Таблица кодируется с помощью utf_8_unicode_ci. Поле varchar (255) с полнотекстовым индексом. Запрос довольно прост: «SELECT * FROM users WHERE name = 'lësci'" возвращает оба значения: lësci и Lesci.

1 Ответ

1 голос
/ 22 августа 2009

Я полагаю, вы используете для индексации utf8_unicode_ci. Сличения сделали свое дело. На самом деле он не конвертирует все в ASCII, но обрабатывает отображение между акцентированным и необработанным письмом.

Не уверен насчет этого конкретного, utf8_generic_ci может не относиться к ним как к равным, потому что его отображение намного проще, поэтому оно быстрее.

...