GB18030-2022 字符集

概述

平凯数据库从 v7.1 开始支持 GB18030-2022 字符集。本文档介绍平凯数据库对 GB18030-2022 字符集的支持和兼容情况。

tidb> SHOW CHARACTER SET WHERE CHARSET = 'gb18030'; +---------+---------------------------------+--------------------+--------+ | Charset | Description | Default collation | Maxlen | +---------+---------------------------------+--------------------+--------+ | gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 | +---------+---------------------------------+--------------------+--------+ 1 row in set (0.00 sec) tidb> SHOW COLLATION WHERE CHARSET = 'gb18030'; +--------------------+---------+------+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +--------------------+---------+------+---------+----------+---------+ | gb18030_bin | gb18030 | 249 | | Yes | 1 | | gb18030_chinese_ci | gb18030 | 248 | Yes | Yes | 2 | +--------------------+---------+------+---------+----------+---------+ 2 rows in set (0.00 sec)

与 MySQL 的兼容性

本节介绍平凯数据库与 MySQL 对 GB18030 字符集的兼容情况。

字符兼容性

  • 平凯数据库支持 GB18030-2022 的字符,MySQL 支持 GB18030-2005 的字符,因此部分字符的编解码结果不同。

  • 对于合法而未分配 code point 的 GB18030 字符,比如 0xFE39FE39,MySQL 支持以 16 进制的方式写入数据库中,并保存为 ?,而平凯数据库会禁止这种字符的写入。

排序规则兼容性

平凯数据库支持的 gb18030_bin 与 MySQL 支持的 gb18030_bin 排序规则不一致,平凯数据库是将 GB18030 转换成 UTF8MB4 然后做二进制排序。

组件兼容性

  • TiFlash、TiDB Data Migration (DM) 和 TiCDC 目前不支持 GB18030 字符集。

  • Dumpling 在 v7.1.8-5.1 之前不支持导出 charset=GB18030 的表,TiDB Lightning 在 v7.1.8-5.1 之前不支持导入 charset=GB18030 的表。

  • TiDB Backup & Restore(BR)在 v7.1.8-5.1 之前不支持恢复 charset=GB18030 的表。另外,任何版本的 BR 都不支持恢复 charset=GB18030 的表到 v7.1.8-5.1 之前的平凯数据库集群。