目前我用途:
utf8mb4
数据库字符集。utf8mb4_unicode_520_ci
数据库排序规则。
我知道utf8mb4
支持每个字符最多四个字节。我也知道Unicode是一个不断更新的标准。过去我认为utf8
已经足够了,直到我的一些测试数据被损坏,吸取了教训。但是我很难理解字符集和排序规则的升级路径。utf8mb4_unicode_520_ci
数据库排序规则基于Unicode Collation Algorithm version 5.2.0。如果您导航到父目录,您将看到在键入此内容时列出的最高版本14.0。现在这些是Unicode * 标准 *,然后是受支持的MariaDB character sets and collations。
我不确定什么时候每个字符4个字节的需求会被每个字符8个字节甚至16个字节所取代,所以这不仅仅是更新数据库排序的简单措施。另外,我在MariaDB的文档中没有看到任何比5.2.0版本更新的东西。
因此,简而言之,我的三个高度相关的问题是:
- 较新的归类(如版本14)是否仍然与四字节字符完全兼容,或者它们是否已经用尽了所有组合,现在每个字符最多需要8或16个字节?
- 关于Unicode版本,MariaDB支持的最新数据库排序规则是什么?
- 关于第二个问题,MariaDB支持比5.2.0更新的版本,那么
utf8mb4
是否仍然足够用于字符集?
我不受MySQL兼容性的约束,也不关心MySQL兼容性。
2条答案
按热度按时间7lrncoxx1#
您可以检查MariaDB示例当前支持的排序规则:
据我所知,MariaDB不支持任何比utf8_unicode_520ci更新的UTF-8排序规则版本,如果您尝试使用'900'版本,例如从MySQL导入元数据到MariaDB,you get errors。
不存在8字节或16字节的UTF-8编码,UTF-8是一种每个字符使用1到4个字节的编码,不会超过这个数目。
MariaDB还支持utf 16和utf 32,但这两种类型都不支持每个字符使用4个以上的字节。Utf 16是可变长度的,每个字符使用一个或两个16位代码单元。Utf 32是固定宽度的,每个字符始终使用32位(4个字节)。
t9eec4r02#
跳过旧的5.2.0版本,MariaDB在MariaDB-10.10.2中添加了UCA-14.0.0排序规则,并且在MariaDB-10.11+版本中也可用。
14.0.0归类还包括不区分重音作为可选归类属性。
此版本还支持缩写。
名单如下:
参考:MDEV-27009