Mysql不区分变音符/重音的搜索和存储



我在执行数据库的变音符/重音不敏感搜索时感到沮丧。

我有一个表,其中存储了其他语言术语。我确保它已设置为使用 utf8 ,并在 utf8_general_ci 中进行整理(我也尝试了_bin_unicode_ci)。

问题是:

  • Hähnchen存储时搜索Hahnchen产生结果
  • Hähnchen被存储时搜索Hähnchen 将不会产生结果

如果我在phpmyadmin中工作,我可以像上面那样保存值:

Hähnchen

但是,从我的脚本工作,这被转换为:

Hühnchen
  • Hühnchen被存储时搜索Hahnchen 将不会产生结果
  • Hühnchen存储时搜索Hähnchen 产生结果

我错过了什么吗?我读了几十个类似的帖子,没有明确的答案(我所尝试的一切都失败了)。

实用文章

在阅读了上面的链接后,特别是来自' decze '的回答,似乎他的说法是正确的:

    $db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');

是无意义的(在某些情况下)。最后,我在连接参数中显式地添加了该选项。

解决方案如:

    mysql:host=localhost;charset=utf8;dbname=.....

这解决了搜索问题和乱码数据保存问题。

:)

最新更新