gpt4 book ai didi

mysql - 为什么不区分大小写在 latin1 和 utf8 中不同?

转载 作者:行者123 更新时间:2023-11-29 07:34:28 24 4
gpt4 key购买 nike

我一直在将一些大表从 latin1 转换为 utf8,发现与 this user 相同的问题.但是我从中转换的表具有排序规则 latin1_general_ci(或 latin_swedish_ci)。那么为什么MySQL在不同的字符集下对“case-insensitive”有不同的解释呢?因为 latin1 不检查 o=ö 或 o=oe,所以唯一的 latin1 索引会产生数千次冲突。

最佳答案

有两个原因:

大小写是语言环境的东西。不同的语言环境可以赋予不同的字符作为小写(或大写)。 IIRC 土耳其语 I 应将 ı(U+0131 拉丁文小写字母 DOTLESS I)作为小写字母。参见例如Unicode Casemap FAQ .所以 _swedish_ 是相关的。

此外,generic unicode 算法很复杂,并且从 Unicode 字符串映射到 Unicode 字符串。在其他字符集上使用它可能会导致问题(实现应该检查和处理转换后的大小写在原始字符集之外的情况)。此外,Unicode 是“现代的”,因此 MySQL 用户[确实]不希望 MySQL 将字符串相等性从一个版本更改为下一个版本(例如,pre-Unicode 到 Unicode-as-first-class-charset [顺便说一句,它不是然而如此]).

关于mysql - 为什么不区分大小写在 latin1 和 utf8 中不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49652885/

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