我在页面中将所有字符集设置为“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
(id
int(11)非空自动递增,title
varchar(255)不为空,主键(
id
),键
title
(title
),)ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=37;
最佳答案
问题是,您所选择的排序规则被设计为忽略特定的重音(而且,很可能是一般的重音)。
如果您希望存储一种特定的语言,而不是多种不同的语言,请尝试使用utf8_(language)_ci
(如果该语言不存在,则可能存在与您的语言相似的另一种语言)。否则,您可以尝试使用Unicode排序规则算法的utf8_unicode_ci
,但我不确定该算法是否有此区别。
您也可以使用utf8_bin
,这可以保证将它们视为不同的,但这是以失去案例不敏感为代价的,而案例不敏感很可能更糟。
话虽如此,但这并不一定是坏事:通过忽略口音,搜索将更加灵活,并且更容易用于无法键入特定字符的人。