UTF8 запросы к базе данных и специальные символы - PullRequest
1 голос
/ 03 ноября 2011

У меня есть база данных Mysql (в utf8_general_ci), и я должен запрашивать столбцы, содержащие специальные символы. Проблема в том, что запросы, содержащие специальные символы, не получают никаких результатов - но запросы, содержащие обычную версию этих символов, делают.

Например, если я хочу запросить слово «été»:

  • SELECT… WHERE столбец LIKE% été% не будет работать.
  • ВЫБРАТЬ… ГДЕ столбец LIKE% ete% будет работать!

Эта проблема должна быть из-за моей кодировки (оба запроса работают, когда выполняются непосредственно в phpMyAdmin).

Я использую PDO и следую инструкциям здесь (/227623/utf-8-polnosty) и при подключении к базе данных делаю exec («SET CHARACTER SET utf8») И exec («SET collation_connection = 'utf8_general_ci'»). Что меня беспокоит, так это что, за исключением этого поискового запроса, веб-сайт отлично работает с utf8 как для отображения, так и для базы данных.

Я подумал, что мог бы использовать transiterate_to_ascii для строк, содержащих специальные символы. Однако я боюсь, что этот вариант неоптимален, особенно для неевропейских языков. Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 03 ноября 2011

Пожалуйста, попробуйте запустить SET NAMES utf8; в MySQL сразу после подключения

...