为什么像Ð和D这样的特殊字符在MySQL中具有相同的标识?

时间:2011-06-07 20:26:07

标签: php mysql character-encoding

当我从表中删除Ð时的名称 它删除所有那些包含D.的项目。 与许多特殊字符相同的情况,如何使用php在mysql中解决这个问题。

3 个答案:

答案 0 :(得分:3)

这取决于您的整理,例如:

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 :(得分:1)

将列整理更改为utf8_bin

请注意,这也会考虑Dd不同。

答案 2 :(得分:0)

这里有类似的问题:

Php page can't recognize "ø" from mysql value

$mysql_set_charset("utf8");