我对我的数据库执行变音符号/重音不敏感搜索感到沮丧。
我有一个表中存储了替代语言术语。我确保已将其设置为使用 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
将产生结果我有什么遗漏的吗?我已经阅读了几十篇没有明确答案的类似帖子(我尝试过的所有内容都失败了)。
答案 0 :(得分:0)
阅读上述链接帖子后,特别是来自“deceze”的答案。他说这是正确的:
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
是废话(在某些情况下)。我最终在连接参数中明确添加了选项。
解决方案例如:
mysql:host=localhost;charset=utf8;dbname=.....
这解决了搜索问题和乱码数据保存问题。
:)