我在页面中将所有字符集设置为“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
”,这是不同的词。
那你怎么看?
有什么问题?
谢谢!
编辑:
如果不存在则创建表 标题
(
id
int(11) NOT NULL AUTO_INCREMENT,
title
varchar(255) NOT NULL,
主键 (id
),
KEY title
(title
),
) ENGINE=MyISAM 默认字符集=utf8 AUTO_INCREMENT=37 ;
最佳答案
问题是您选择的排序规则旨在忽略该特定重音(并且很可能是一般重音)。
如果您希望存储一种特定的语言,而不是多种不同的语言,请尝试使用 utf8_(language)_ci
(如果该语言不存在,则可能存在另一种语言跟你的一样)。否则,您可以尝试使用 Unicode 归类算法的 utf8_unicode_ci
,但我不确定它是否能区分这一点。
您也可以使用 utf8_bin
,这可以保证将它们视为不同,但这是以丢失大小写不敏感为代价的,这很可能更糟。
话虽如此,这不一定是坏事:通过忽略重音符号,搜索将更加灵活,并且对于无法输入特定字符的人来说更易于使用。
关于php - mysql utf8字符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5264622/