# [FAQ] TiDB 如何设置全局的 GBK 字符集

## Key Words

character_set_server, collation_server, new_collations_enabled_on_first_bootstrap

## Description

TiDB 从 v5.4.0 开始支持 GBK 字符集，TiDB 兼容 MySQL 字符集系统参数用于调整集群、Database 级别的默认字符集。MySQL 可以通过 character_set_server 和 character_set_database 修改实例级别和数据库级别的字符集设置。但是 TiDB 中直接通过 character_set_server 设置 global 级别配置后，重连数据库并不能生效。如何设置 GBK 字符集可以实现全局生效？

## Content

在 v5.0.2 版本之前，系统级别配置参数 character_set_server 和 collation_server 为强关联关系，必须保证两个参数同时设置才能生效。该关联关系在  [tidb#23932](https://github.com/pingcap/tidb/pull/23932) 后被删除，并影响 v5.0.x 后续版本。

在 v5.1 因为 [tidb#24836](https://github.com/pingcap/tidb/pull/24836) 对系统参数变量进行重构，在 v5.1.0 以后的版本，设置 global.character_set_server 不再有意义，参数配置设置 collation_server 才会全局生效字符集配置。

## Workarounds

设置 TiDB 集群默认字符集为 GBK, 仅新建会话生效，参考操作命令如下：

```sql
set global collation_server ='gbk_chinese_ci'
```

> 注意
> 
> 新建 TiDB 集群初始化以后，可以通过上文配置命令设置全局默认字符集配置为 GBK；
> 已经使用中的 TiDB 集群，设置该参数以后，仅对新的 schema 生效，未生效对象，可以通过 [Alter 命令修改 scheme/table 的字符集](https://docs.pingcap.com/tidb/stable/character-set-and-collation)；
> 

## Affected Versions

N/A
