@@ -7,12 +7,14 @@ summary: 本文介绍 TiDB 对 GBK 字符集的支持情况。
7
7
8
8
TiDB 从 v5.4.0 开始支持 GBK 字符集。本文档介绍 TiDB 对 GBK 字符集的支持和兼容情况。
9
9
10
+ 从 TiDB v6.0.0 开始,[ 新的排序规则框架] ( /character-set-and-collation.md#新框架下的排序规则支持 ) 默认启用,即 TiDB GBK 字符集的默认排序规则为 ` gbk_chinese_ci ` ,与 MySQL 保持一致。
11
+
10
12
``` sql
11
13
SHOW CHARACTER SET WHERE CHARSET = ' gbk' ;
12
14
+ -- -------+-------------------------------------+-------------------+--------+
13
15
| Charset | Description | Default collation | Maxlen |
14
16
+ -- -------+-------------------------------------+-------------------+--------+
15
- | gbk | Chinese Internal Code Specification | gbk_bin | 2 |
17
+ | gbk | Chinese Internal Code Specification | gbk_chinese_ci | 2 |
16
18
+ -- -------+-------------------------------------+-------------------+--------+
17
19
1 row in set (0 .00 sec)
18
20
@@ -21,8 +23,9 @@ SHOW COLLATION WHERE CHARSET = 'gbk';
21
23
| Collation | Charset | Id | Default | Compiled | Sortlen |
22
24
+ -- --------------+---------+------+---------+----------+---------+
23
25
| gbk_bin | gbk | 87 | | Yes | 1 |
26
+ | gbk_chinese_ci | gbk | 28 | Yes | Yes | 1 |
24
27
+ -- --------------+---------+------+---------+----------+---------+
25
- 1 rows in set (0 .00 sec)
28
+ 2 rows in set (0 .00 sec)
26
29
```
27
30
28
31
## 与 MySQL 的兼容性
@@ -31,30 +34,12 @@ SHOW COLLATION WHERE CHARSET = 'gbk';
31
34
32
35
### 排序规则兼容性
33
36
34
- MySQL 的字符集默认排序规则是 ` gbk_chinese_ci ` 。与 MySQL 不同,TiDB GBK 字符集的默认排序规则为 ` gbk_bin ` 。另外,TiDB 支持的 ` gbk_bin ` 与 MySQL 支持的 ` gbk_bin ` 排序规则也不一致,TiDB 是将 GBK 转换成 UTF8MB4 然后做二进制排序。
35
-
36
- 如果要使 TiDB 兼容 MySQL 的 GBK 字符集排序规则,你需要在初次初始化 TiDB 集群时设置 TiDB 配置项[ ` new_collations_enabled_on_first_bootstrap ` ] ( /tidb-configuration-file.md#new_collations_enabled_on_first_bootstrap ) 为 ` true ` 来开启[ 新的排序规则框架] ( /character-set-and-collation.md#新框架下的排序规则支持 ) 。
37
+ MySQL 的 GBK 字符集默认排序规则是 ` gbk_chinese_ci ` 。TiDB 的 GBK 字符集的默认排序规则取决于 TiDB 配置项 [ ` new_collations_enabled_on_first_bootstrap ` ] ( /tidb-configuration-file.md#new_collations_enabled_on_first_bootstrap ) 的值:
37
38
38
- 开启新的排序规则框架后,如果查看 GBK 字符集对应的排序规则,你可以看到 TiDB GBK 默认排序规则已经切换为 ` gbk_chinese_ci ` 。
39
+ - 默认情况下,TiDB 配置项 [ ` new_collations_enabled_on_first_bootstrap ` ] ( /tidb-configuration-file.md#new_collations_enabled_on_first_bootstrap ) 为 ` true ` ,表示开启[ 新的排序规则框架] ( /character-set-and-collation.md#新框架下的排序规则支持 ) 。GBK 字符集的默认排序规则是 ` gbk_chinese_ci ` 。
40
+ - 当 TiDB 配置项 [ ` new_collations_enabled_on_first_bootstrap ` ] ( /tidb-configuration-file.md#new_collations_enabled_on_first_bootstrap ) 为 ` false ` 时,表示关闭新的排序规则框架,GBK 字符集的默认排序规则是 ` gbk_bin ` 。
39
41
40
- ``` sql
41
- SHOW CHARACTER SET WHERE CHARSET = ' gbk' ;
42
- + -- -------+-------------------------------------+-------------------+--------+
43
- | Charset | Description | Default collation | Maxlen |
44
- + -- -------+-------------------------------------+-------------------+--------+
45
- | gbk | Chinese Internal Code Specification | gbk_chinese_ci | 2 |
46
- + -- -------+-------------------------------------+-------------------+--------+
47
- 1 row in set (0 .00 sec)
48
-
49
- SHOW COLLATION WHERE CHARSET = ' gbk' ;
50
- + -- --------------+---------+------+---------+----------+---------+
51
- | Collation | Charset | Id | Default | Compiled | Sortlen |
52
- + -- --------------+---------+------+---------+----------+---------+
53
- | gbk_bin | gbk | 87 | | Yes | 1 |
54
- | gbk_chinese_ci | gbk | 28 | Yes | Yes | 1 |
55
- + -- --------------+---------+------+---------+----------+---------+
56
- 2 rows in set (0 .00 sec)
57
- ```
42
+ 另外,TiDB 支持的 ` gbk_bin ` 与 MySQL 支持的 ` gbk_bin ` 排序规则不一致,TiDB 是将 GBK 转换成 ` utf8mb4 ` ,然后再进行二进制排序。
58
43
59
44
### 非法字符兼容性
60
45
0 commit comments