我在页面中将所有字符集设置为“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)NOT NULL AUTO_INCREMENT,
title
varchar(255)NOT NULL,
PRIMARY KEY(id
),
KEY title
(title
),
)ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 37;
答案 0 :(得分:3)
问题在于,您选择的排序规则是为了忽略该特定重音(并且很可能是一般的重音)。
如果您希望存储特定语言而不是许多不同语言,请尝试使用utf8_(language)_ci
(如果不存在该语言,则可能存在与您的语言类似的其他语言)。否则,您可以尝试使用Unicode排序算法的utf8_unicode_ci
,但我不确定是否会对此进行区分。
您也可以使用utf8_bin
,但保证会将它们视为不同,但这样做的代价是失去不区分大小写,这很可能更糟。
话虽如此,这并不一定是坏事:通过忽略重音,搜索将更灵活,更容易用于无法输入特定字符的人。
答案 1 :(得分:0)
尝试使用utf8_encode。
答案 2 :(得分:0)
你想要utf8_bin,* _ci是不区分大小写的,所以重音被视为常规字母