Как сделать выбор нечувствительным к акценту через форму PHP? - PullRequest
2 голосов
/ 25 марта 2011

Я пытался найти что-то похожее на мою проблему, но я всегда нахожу противоположную ситуацию ...

Вот предложение (любая помощь приветствуется):

Моя база данных (innodb)установлен в UTF8.В основном все (на стороне сервера, на стороне клиента, в базе данных, в соединении и т. Д.) Установлено на UTF8 и UTF8 параметры сортировки general_ci ...

Что я понимаю, так это то, что general_ci делает его нечувствительным к регистру, но также делает акцент-insensitive.

В то время как в phpmyadmin запрос что-то вроде 'a' = 'á' приводит к true ("1"), попытка запросить имя с ударением из формы php с другого сайта просто приводит к "0 ".

Вопрос в том, как выполнить выбор с помощью php-формы, который делает все нечувствительным (как melee = mélee, jose = JOSÉ и т. Д.)?

Все установлено на UTF8,включая php заголовки, "SET NAMES ('utf8')" и все те, которые установлены в my.cnf .... У меня также есть "accept-charset =" utf-8 "" в моем теге формы, но это такработает: - "jose" дает мне только записи "jose%" ... - если я хотел найти JOSÉ, я не могу просто запросить "jose", последний É "должен" быть точно в верхнем регистре с ударением (например,josÉ или JOSÉ), но ничего не найду, если я попробую выбрать "josé" ....

Все они находятся в utf8_general_ci, "покажите переменные наподобие '% character%'" и получите все UTF8 ...

Имена правильно хранятся в базе данных (с символами UTF8 ипри просмотре на странице значения отображаются правильно), я могу сравнить "a" и "Ã" через SQL в phpmyadmin без проблем, они возвращают true ... Это просто не будет работать, когда я использую форму иподключение к этой базе данных ... Письма нечувствительны к регистру, верно, но акценты не (даже не чувствительны к регистру), есть идеи, почему это так?

Как должна быть моя php-форма, чтобы "отправить "как регистр, так и нечувствительные к акценту строки?

1 Ответ

0 голосов
/ 26 марта 2011

Вот некоторые общие вещи, которые могут быть причиной этого:

  1. Просто чтобы быть уверенным, вы должны сохранить текущее соединение (результат mysql_connect), а затем передать его в качестве аргумента mysql_query ("SET NAMES 'utf8'", $ conn_handler);

  2. Ваша база данных UTF8, но как насчет ваших таблиц и столбцов? Они тоже UTF8?

  3. Ваши взгляды закодированы с UTF8 без спецификации? Это может привести к тому, что вы видите символы «Ã ©» в «Андре».

Если ни одна из них не работает, вы не против поделиться тем, как вы подключаетесь к базе данных?

Ура!

...