我正在研究需要存储通用字符的后端。
为此,我选择了utf8mb4
表格编码。我还必须选择Table Collation。
最直接的选择是选择utf8mb4_general_ci
表格排序。除了一般的一个,还有大约20个其他的排序规则可供选择。更具体的目的是什么? utf8mb4_general_ci
或utf8mb4_unicode520_ci
涵盖了所有这些内容吗?如果我想存储从中文到阿拉伯语的各种字符,我应该使用哪一个。
答案 0 :(得分:1)
...general_ci
很简单。它不会将2个字符的组合(例如非间距标记)与单个字符的等效组合等同。
...unicode_520_ci
来自Unicode版本5.20,这是当MySQL选择它时可用的最新版本。它处理的事情就像订购了表情符号,而以前的版本没有。
使用MySQL 8.0,首选排序规则为utf8mb4_0900_ai_ci
,基于Unicode 9.0。
...<language>_ci
处理给定语言中的变体。例如,西班牙语中的ch
和ll
应该被视为&#34;字母&#34;并在cz
和d
以及lz
和m
之间排序。
对于一般用途,请勿使用...general_ci
,使用从Unicode派生的最新版本。对于语言特定的情况,请选择其他一种排序规则。
我知道在不同的排序规则中,中文和阿拉伯语的排序方式(甚至是否)有所不同。但是,我看到...persion_ci
,所以我怀疑存在问题。
请使用utf8mb4
,而不是utf8
,尤其是因为您需要中文。