重音词不敏感的搜索

时间:2012-02-14 15:02:50

标签: mysql sql

我的表和列排序规则是:utf8_general_ci,现在当我尝试查找单词Supermarché时,MySQL命令会返回空结果:

$stmt = $this->db->prepare('SELECT libelle,activite,adresse,tel,lat,lng FROM etablissements where type = "Supermarché"');

但是,当我在同一张表中查找没有重音的另一个单词时(同一列也是如此),我得到了正确的结果。

MySQL表结构有什么关系吗?

1 个答案:

答案 0 :(得分:1)

PHP文件的编码应与MySQL客户端编码匹配。可能发生的事情是源代码中的é无法正确访问数据库。如果您的源代码是以UTF-8编码的,那么您应该调用

mysqli_set_charset($link, "utf8");  or  mysqli::set_charset("utf8");

或者如果您使用旧的MySQL API:

mysql_set_charset("utf8");

每次连接必须完成一次,最好是在创建之后。

另一种可能性是使用转义代码替换é,这样您就可以知道将要发送到数据库的内容:

"Supermarch\xe9"        # for connections in latin1
"Supermarch\xc3\xa9"    # for connections in utf8