我对数据库进行变音符号/重音不敏感搜索时感到沮丧。

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

问题是:


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


如果我在phpmyadmin中工作,则可以保存上述值:

Hähnchen


但是,从我的脚本开始,它转换为:

Hühnchen



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


我有什么想念的吗?我已经阅读了数十篇类似的文章,但都没有明确的答案(我尝试过的所有方法都失败了)。

最佳答案

Useful post

在阅读了上面的链接后,特别是从“降级”中得到的答案,看来他是正确的:

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


是胡说八道(在某些情况下)。我最终在连接参数中显式添加了该选项。

解决方案,例如:

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


这样可以解决搜索问题和数据保存混乱的问题。

:)

10-07 22:08