Сравнение Unicode в PHP / MySQL - PullRequest
       1

Сравнение Unicode в PHP / MySQL

1 голос
/ 14 февраля 2011

Имя Accîdent, кажется, отличается от AccÎdent, когда я делаю запрос к базе данных, чтобы обновить столбец. И все же Accidentent и AccÎdent указывают на то же место ...

В MySQL Accîdent = Accîdent при вставке. Кроме того, AccÎdent = AccÃŽdent.

Вы знаете, почему это так?

Ответы [ 2 ]

2 голосов
/ 14 февраля 2011

По умолчанию MySQL предполагает, что клиент использует набор символов latin1.Если вы используете UTF-8 в своих PHP-скриптах, то это предположение неверно.Вы должны указать MySQL, что вы используете UTF-8, выполнив этот оператор SQL сразу после открытия соединения с базой данных:

SET NAMES utf8

Тогда данные, вставленные следующими операторами SQL, будут использовать правильный символзадавать.Это означает, что вам нужно заново вставить ваши данные или выполнить процедуру преобразования MySQL (см. Последние абзацы).

Рекомендуется, чтобы ваши таблицы были настроены для хранения данных в UTF-8, чтобы избежать ненужных преобразований набора символов для чтения / записи.Это не требуется, однако.

Более подробная информация доступна в документации MySQL .В частности, Наборы символов соединения и сопоставления .

0 голосов
/ 14 февраля 2011
  • Во-первых, вы, похоже, храните данные UTF-8 в таблице другой кодировки.MySQL попытается справиться, но побочный эффект, как вы видите, - данные в базе данных будут выглядеть «странно».При создании таблицы необходимо указать кодировку символов - предпочтительно UTF-8.Для существующих таблиц вам необходимо преобразовать данные.

  • Во-вторых, таблицы имеют "сопоставление" помимо кодирования.Кодировка определяет, как символы отображаются в байтах, сортировка определяет сортировку и сравнение.Существуют языковые параметры сортировки, но utf8_general_ci должен быть тем, который вы ищете (ci означает «без учета регистра») - тогда ваши две строки будут соответствовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...