我的表和列排序规则是:utf8_general_ci
,现在当我尝试查找单词Supermarché
时,MySQL命令会返回空结果:
$stmt = $this->db->prepare('SELECT libelle,activite,adresse,tel,lat,lng FROM etablissements where type = "Supermarché"');
但是,当我在同一张表中查找没有重音的另一个单词时(同一列也是如此),我得到了正确的结果。
MySQL表结构有什么关系吗?
答案 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