Почему некоторые специальные символы, такие как Ð и D, имеют одинаковую идентичность в MySQL? - PullRequest
2 голосов
/ 08 июня 2011

Когда я удаляю из таблицы, где имя подобно ì, он также удаляет все те элементы, которые содержат D. Тот же случай со многими специальными символами, как решить эту проблему в mysql с помощью php.

Ответы [ 3 ]

3 голосов
/ 08 июня 2011

Это зависит от вашего сопоставления, например:

mysql> SELECT 'é'= 'e' COLLATE utf8_general_ci;
+-----------------------------------+
| 'é'= 'e' COLLATE utf8_general_ci |
+-----------------------------------+
|                                 1 |
+-----------------------------------+
1 row in set (0.00 sec)

mysql> SELECT 'é'= 'e' COLLATE utf8_bin;;
+----------------------------+
| 'é'= 'e' COLLATE utf8_bin |
+----------------------------+
|                          0 |
+----------------------------+
1 row in set (0.00 sec)

Вы можете установить его для каждого соединения, если хотите:

mysql> SET collation_connection=utf8_bin;
Query OK, 0 rows affected (0.02 sec)

mysql> SELECT 'é'= 'e';
+-----------+
| 'é'= 'e' |
+-----------+
|         0 |
+-----------+
1 row in set (0.00 sec)

mysql> SET collation_connection=utf8_general_ci;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT 'é'= 'e';
+-----------+
| 'é'= 'e' |
+-----------+
|         1 |
+-----------+
1 row in set (0.00 sec)
1 голос
/ 08 июня 2011

Измените параметры сортировки столбцов на utf8_bin.

Обратите внимание, что это будет также учитывать D и d.

0 голосов
/ 08 июня 2011

Подобный вопрос здесь:

Php-страница не может распознать "ø" по значению mysql

$mysql_set_charset("utf8");
...