MySQL преобразовывает символы UTF-8 в моем запросе (не результаты), удаляя акценты? - PullRequest
0 голосов
/ 24 февраля 2010

У меня есть несколько записей в БД, где одно из полей VARCHAR может содержать буквы с акцентом. Если я выполняю следующий запрос с помощью клиента CLI MySQL, я получаю 1 возвращенную строку, что является правильным:

SELECT site_id, site_name FROM tbl_site WHERE site_name LIKE '%ém%'

Тем не менее, использование некоторого PHP (PDO) для выполнения того же запроса возвращает все строки, которые содержат 'em', но не одну строку, содержащую 'ém'. Еще более странно, что регистрация запросов MySQL показывает, что запрос содержит «é», а не «e».

Есть идеи, что здесь происходит?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2010

Это зависит от набора символов и параметров сортировки базы данных, таблицы или столбца. Вы выполняете запрос к той же таблице?

Не могли бы вы опубликовать результаты

SHOW CREATE TABLE <yourTable>;

Кроме того, вы можете указать желаемый порядок сортировки на уровне запроса:

SELECT site_id, site_name FROM tbl_site WHERE site_name LIKE '%ém%' collate utf8_bin;
-- same as
SELECT site_id, site_name FROM tbl_site WHERE BINARY site_name LIKE '%ém%';

(Примечание. Вы должны очень тщательно оценить производительность таких запросов)

1 голос
/ 24 февраля 2010

Параметры сортировки utf8_general_ci не чувствительны к регистру и нечувствительны к акценту.

...