我有一个存储瑞典字符的MySQL数据库(虽然不是PK的一部分)并确实选择了这些字符。
我对这种东西没有太多的经验,但我之前已将整理设置为“utf16_swedish_ci”,这似乎已经很好地工作了很长时间并能够区分相似的字符(如在选择陈述中ävsa和évse。
但是,最近,我注意到使用该校对似乎始终认为é和e相同(尽管它似乎区分了所有其他类似的瑞典字符)。
在较新版本的MySQL中,有什么变化吗?或者应该一直如此,直到现在我才注意到它?我应该用什么整理来唯一地识别所有不会产生任何奇怪副作用的瑞典字符?
提前致谢!
答案 0 :(得分:0)
å
,ä
和ö
是瑞典语母语字母的一部分,不需要任何特殊处理。但是,é
不是原生的,并且依赖于重音规则进行整理。
据我所知,要在MySQL
中获取重音敏感排序规则,您需要使用其中一个二进制排序规则 - 例如utf16_bin
,不幸的是,它也区分大小写。
您使用的是MySQL
的哪个版本,并且最近是否更新到了更新版本?如果有,则回滚到以前的版本可以解决您的整理问题。我知道版本8.x.x中包含的排序规则有一些变化,所以也许这就是您所遇到的。
答案 1 :(得分:0)
大多数(包括swedish_ci
)utf8或utf8mb4归类E
= é
。例外情况:_bin
和_icelandic_ci
。请参阅http://mysql.rjweb.org/utf8_collations.html和http://mysql.rjweb.org/utf8mb4_collations.html
请注意,大多数排序规则都以_ci
结尾,这意味着 案例折叠和(大多数情况下)忽略重音。
不要使用utf16或utf32;仅使用utf8 / utf8mb4。
MySQL没有用于区分大小写和重音的排序规则。
排序规则中唯一不兼容的更改是使用德语ß
在5.0中。这是一场惨败; MySQL永远不会再次更改排序规则 - 尽管它可能会添加新的排序规则。