mysql索引是否将UTF-8转换为ASCII?

mysql索引是否将UTF-8转换为ASCII?,mysql,character-encoding,Mysql,Character Encoding,我一直在使用数据库中的UTF-8字符,并一直在使用php inconv函数将字符从UTF-8转换为ascii,然后再将其放入数据库 这样,我想,我只需要在查询数据库之前将查询转换为ASCII。 然而,现在我看到的结果让我相信mysql为我做了这个翻译 有人知道这是否正确吗?我可以跳过php中的整个inconv(这不是很有效) 例如,搜索“lësci”会返回“Lesci”,这让我相信,到ASCII的转换是在某个时刻发生的 该表使用utf_8_unicode_ci编码。 该字段是带有全文索引的var

我一直在使用数据库中的UTF-8字符,并一直在使用php inconv函数将字符从UTF-8转换为ascii,然后再将其放入数据库

这样,我想,我只需要在查询数据库之前将查询转换为ASCII。 然而,现在我看到的结果让我相信mysql为我做了这个翻译

有人知道这是否正确吗?我可以跳过php中的整个inconv(这不是很有效)

例如,搜索“lësci”会返回“Lesci”,这让我相信,到ASCII的转换是在某个时刻发生的

该表使用utf_8_unicode_ci编码。 该字段是带有全文索引的varchar(255)。
查询相当简单,“SELECT*FROM users WHERE name='lësci'”返回'lësci'和'Lesci'。

我假设您对索引使用utf8ëU unicodeëci排序规则。排序成功了。它并不是真的将所有内容都转换为ASCII,而是处理重音字母到原始字母之间的映射


utf8_generic_ci可能不会将它们视为相等的,因为它的映射更简单,因此速度更快。

我刚刚在MySQL 5.0.75上试用过,它没有您描述的任何问题。”lësci'和'Lesci'仅匹配各自的字符串。你能提供更多的细节吗,比如你使用的是什么版本的MySQL,你的表定义是什么,还有一个显示问题的查询示例?谢谢比尔,我使用的是MySQL 5.027。该表使用utf_8_unicode_ci编码。该字段是带有全文索引的varchar(255)。查询相当简单,“SELECT*FROM users WHERE name='lësci'”同时返回'lësci'和'Lesci'。我仍然无法重现您描述的行为。您已命名排序规则,但未命名字符集。您能给出“
SHOW CREATE TABLE users
”的结果吗?另外,会话的字符集和排序规则是什么(即,您是否执行了任何
集名称
命令)?这就是我所想的,尽管我刚刚意识到索引不是全文索引,只是常规索引。