gpt4 book ai didi

MySQL 将 ÅäÖ 视为 AAO?

转载 作者:行者123 更新时间:2023-11-29 21:01:28 51 4
gpt4 key购买 nike

这两个查询给出了完全相同的结果:

select * from topics where name='Harligt';
select * from topics where name='Härligt';

这怎么可能?看起来mysql在搜索时会将åäö翻译成aao。有什么办法可以关掉这个吗?

据我所知,我到处都使用 utf-8 编码。终端和 php 都会出现同样的问题。

最佳答案

是的,这是非特定于语言的 unicode 排序规则中的标准行为。

9.1.13.1. Unicode Character Sets

To further illustrate, the following equalities hold in both utf8_general_ci and utf8_unicode_ci (for the effect this has in comparisons or when doing searches, see Section 9.1.7.7, “Examples of the Effect of Collation”):

Ä = AÖ = OÜ = U

另请参阅Examples of the effect of collation

你需要要么

  • 使用不具有此“功能”的排序规则(即 utf8_bin ,但这会产生其他后果)

  • 仅针对查询使用不同的排序规则。这应该有效:

     select * from topics where name='Harligt' COLLATE utf8_bin;

如果您想要进行不区分大小写的 LIKE进行 Ä = A 变音转换,则会变得更加困难。我知道没有任何 mySQL 排序规则是不区分大小写的,并且不会执行这种隐式变音转换。如果有人知道,我很想听听。

相关:

关于MySQL 将 ÅäÖ 视为 AAO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37189391/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com