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