Mysql Diacritic / Accent不敏感的搜索和存储

时间:2014-07-10 17:13:52

标签: mysql utf-8 pdo character-encoding diacritics

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

我有一个表中存储了替代语言术语。我确保已将其设置为使用 utf8 并整理为 utf8_general_ci (我还尝试了_bin和{{ 1}})。

麻烦在于:

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

如果我在phpmyadmin工作,我可以保存上面的值:

Hähnchen

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

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

我有什么遗漏的吗?我已经阅读了几十篇没有明确答案的类似帖子(我尝试过的所有内容都失败了)。

1 个答案:

答案 0 :(得分:0)

Useful post

阅读上述链接帖子后,特别是来自“deceze”的答案。他说这是正确的:

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

是废话(在某些情况下)。我最终在连接参数中明确添加了选项。

解决方案例如:

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

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

:)