我对数据库进行变音符号/重音不敏感搜索时感到沮丧。
我有一个表,其中存储了其他语言术语。我确保已将其设置为使用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=.....
这样可以解决搜索问题和数据保存混乱的问题。
:)