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

标签 php mysql character-encoding

当我从名称类似 Ð 的表中删除时 它也会删除所有包含 D 的项目。 同样的情况,有很多特殊字符,如何在 mysql 中用 php 解决这个问题。

最佳答案

这取决于您的排序规则,例如:

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)

关于php - 为什么像 Ð 和 D 这样的特殊字符在 MySQL 中具有相同的标识?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6271203/

相关文章:

character-encoding - 这是什么字符编码?

java - RestTemplate UTF-8 编码与交换不起作用

php - Magento,自定义产品列表

php - 在 php 中使用 ftp_get 感到困惑

MySQL 从多个 ID 获取分组连接

java - JDBI 如何从一个@SqlUpdate 中的两个表中删除数据

Java:单个代码点的 UTF-8 字节长度(再次代理)

php - 我真的很想使用 PHP 和 MySQL 持久连接,但是如何呢?

php - PHP 中列的总和

mysql - 使用 LIKE 对同一列计算不同的值