mysql utf8字符问题

时间:2011-03-10 19:14:35

标签: php mysql utf-8 character-encoding

我在页面中将所有字符集设置为“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 titletitle),

)ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 37;

3 个答案:

答案 0 :(得分:3)

问题在于,您选择的排序规则是为了忽略该特定重音(并且很可能是一般的重音)。

如果您希望存储特定语言而不是许多不同语言,请尝试使用utf8_(language)_ci(如果不存在该语言,则可能存在与您的语言类似的其他语言)。否则,您可以尝试使用Unicode排序算法的utf8_unicode_ci,但我不确定是否会对此进行区分。

您也可以使用utf8_bin,但保证会将它们视为不同,但这样做的代价是失去不区分大小写,这很可能更糟。

话虽如此,这并不一定是坏事:通过忽略重音,搜索将更灵活,更容易用于无法输入特定字符的人。

答案 1 :(得分:0)

尝试使用utf8_encode

答案 2 :(得分:0)

你想要utf8_bin,* _ci是不区分大小写的,所以重音被视为常规字母

相关问题