php - mysql utf8字符问题

标签 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”,这是不同的词。

那你怎么看?
有什么问题?

谢谢!

编辑:

如果不存在则创建表 标题
(
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/

相关文章:

php - PHP 中错误的浮点格式(sprintf、printf)

php - 表仅显示 2 个总结果,但却显示 4 个结果 = 2 个重复项?

html - 使用 "cat"将非英文字符写入 .html 文件(在 R 中)

perl - 如何在Perl中禁止UTF-8警告?

php - PHP 中的 ODBC 准备语句

php - 从 $_SERVER ["SERVER_NAME"](或其他方式)获取域和子域

php - 无法在mysql选择查询中获取两个字段

php - 当两个表具有相同的列名时,连接关系表后对模型进行排序

MYSQL - 连接三个大表

php - 计算各种语言单词的 PHP 库/类?