这两个查询给了我完全相同的结果:
select * from topics where name='Harligt';
select * from topics where name='Härligt';
这怎么可能?看起来mysql在搜索时会将åäö翻译成aao。有什么办法可以关掉这个吗?
据我所知,我到处都使用 utf-8 编码。终端和 php 都会出现同样的问题。
是的,这是非特定于语言的 unicode 排序规则中的标准行为。
9.1.13.1. Unicode 字符集 http://dev.mysql.com/doc/refman/5.1/en/charset-unicode-sets.html
为了进一步说明,以下等式在 utf8_general_ci 和 utf8_unicode_ci 中都成立(有关比较或搜索时的效果,请参阅第 9.1.7.7 节“排序规则效果的示例”):
= A
Ø = O
Ü = U
也可以看看整理效果示例 http://dev.mysql.com/doc/refman/5.1/en/charset-collation-effect.html
你需要要么
如果你想做不区分大小写的事情会变得更加困难LIKE
but not有Ä = A
变音转换。我知道没有任何 mySQL 排序规则是不区分大小写的,并且不会执行这种隐式变音转换。如果有人知道的话,我很想听听。
Related:
- 寻找不区分大小写的 MySQL 排序规则,其中“a”!=“ä” https://stackoverflow.com/questions/2044268/looking-for-case-insensitive-mysql-collation-where-a-a
- MYSQL区分大小写搜索utf8_bin字段 https://stackoverflow.com/questions/901066/mysql-case-sensitive-search-for-utf8-bin-field
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)