我在页面中将所有字符集设置为“utf8”,在数据库中将所有排序规则(也是字段排序规则)设置为utf8_general_ci,并在connect.php中添加此代码

mysql_set_charset('utf8',$connect);
mysql_query("SET NAMES 'utf8'");

尽管所有内容都是utf,但当我运行此查询时:
"SELECT * FROM titles WHERE title='toruń'"
结果:返回“toruń”和“torun”,这是不同的单词。
你觉得呢?
怎么了?
谢谢!
编辑:
如果不存在,则创建表titles(
idint(11)非空自动递增,
titlevarchar(255)不为空,
主键(id),
titletitle),
)ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=37;

最佳答案

问题是,您所选择的排序规则被设计为忽略特定的重音(而且,很可能是一般的重音)。
如果您希望存储一种特定的语言,而不是多种不同的语言,请尝试使用utf8_(language)_ci(如果该语言不存在,则可能存在与您的语言相似的另一种语言)。否则,您可以尝试使用Unicode排序规则算法的utf8_unicode_ci,但我不确定该算法是否有此区别。
您也可以使用utf8_bin,这可以保证将它们视为不同的,但这是以失去案例不敏感为代价的,而案例不敏感很可能更糟。
话虽如此,但这并不一定是坏事:通过忽略口音,搜索将更加灵活,并且更容易用于无法键入特定字符的人。

07-27 18:33