---
title: "字符集和字符序 - OceanBase 数据库 V4.3.0 | OceanBase 文档中心"
description: 字符集和字符序 OceanBase 数据库 Oracle 模式下目前支持如下字符集： gbk gb18030 utf16 utf8mb4 latin1 gb18030_2022 说明 为支持无缝迁移，OceanBase 数据库在语法上将 UTF8 视为 UTF8MB4 的同义词。 功能适用性 OceanBase Co…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.0

# 字符集和字符序

更新时间：2026-04-10 11:58:35

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/300.basic-elements-of-oracle-mode/1000.character-set-and-collation-of-oracle-mode.md)  

OceanBase 数据库 Oracle 模式下目前支持如下字符集：

- `gbk`
 - `gb18030`
 - `utf16`
 - `utf8mb4`
 - `latin1`
 - `gb18030_2022`

#### 说明

为支持无缝迁移，OceanBase 数据库在语法上将 `UTF8` 视为 `UTF8MB4` 的同义词。

#### 功能适用性

OceanBase Connector/J 暂不支持 `utf8mb4_unicode_ci` 和 `utf16_unicode_ci`。

OceanBase 数据库 Oracle 模式下目前支持的字符序如下表所示。

| 字符序 | 所属字符集 | 说明 |
| --- | --- | --- |
| utf8mb4_general_ci | utf8mb4 | 使用通用排序规则。 |
| utf8mb4_bin | utf8mb4 | 使用二进制排序规则。 |
| utf8mb4_unicode_ci | utf8mb4 | 使用基于 Unicode Collation Algorithm (UCA) 的排序规则。 |
| binary | binary | 使用二进制排序规则。 |
| gbk_chinese_ci | gbk | 使用中文语言排序规则。 |
| gbk_bin | gbk | 使用二进制排序规则。 |
| utf16_general_ci | utf16 | 使用通用排序规则。 |
| utf16_bin | utf16 | 使用二进制排序规则。 |
| utf16_unicode_ci | utf16 | 使用基于 Unicode Collation Algorithm (UCA) 的排序规则。 |
| gb18030_chinese_ci | gb18030 | 使用中文语言排序规则。 |
| gb18030_bin | gb18030 | 使用二进制排序规则。 |
| latin1_bin | latin1 | latin1 使用二进制排序规则。 |
| gb18030_2022_bin | gb18030_2022 | 使用二进制排序规则。Oracle 模式下该字符集的默认字符序。 |
| gb18030_2022_chinese_ci | gb18030_2022 | 使用拼音排序规则。不区分大小写。 |
| gb18030_2022_chinese_cs | gb18030_2022 | 使用拼音排序规则。区分大小写。 |
| gb18030_2022_radical_ci | gb18030_2022 | 使用部首笔画排序规则。不区分大小写。 |
| gb18030_2022_radical_cs | gb18030_2022 | 使用部首笔画排序规则。区分大小写。 |
| gb18030_2022_stroke_ci | gb18030_2022 | 使用笔画排序规则。不区分大小写。 |
| gb18030_2022_stroke_cs | gb18030_2022 | 使用笔画排序规则。区分大小写。 |

OceanBase 数据库 Oracle 模式下，通过系统视图 `NLS_DATABASE_PARAMETERS` 可以查看 `nls_sort` 变量所对应的系统排序规则，`nls_nchar_characterset` 变量对应数据库默认字符集（用于 `NCHAR`、`NVARCHAR2`、`NCLOB` 等数据类型），`nls_characterset` 对应数据库中 `CHAR`、`VARCHAR2`、`CLOB` 等数据类型的默认字符集。

```shell
obclient> SELECT * FROM NLS_DATABASE_PARAMETERS;
+-------------------------+------------------------------+
| PARAMETER               | VALUE                        |
+-------------------------+------------------------------+
| NLS_DATE_FORMAT         | DD-MON-RR                    |
| NLS_TIMESTAMP_FORMAT    | DD-MON-RR HH.MI.SSXFF AM     |
| NLS_TIMESTAMP_TZ_FORMAT | DD-MON-RR HH.MI.SSXFF AM TZR |
| NLS_TERRITORY           | AMERICA                      |
| NLS_SORT                | BINARY                       |
| NLS_COMP                | BINARY                       |
| NLS_CHARACTERSET        | AL32UTF8                     |
| NLS_NCHAR_CHARACTERSET  | AL16UTF16                    |
| NLS_DATE_LANGUAGE       | AMERICAN                     |
| NLS_LENGTH_SEMANTICS    | BYTE                         |
| NLS_NCHAR_CONV_EXCP     | FALSE                        |
| NLS_CALENDAR            | GREGORIAN                    |
| NLS_NUMERIC_CHARACTERS  | .,                           |
| NLS_CURRENCY            | $                            |
| NLS_ISO_CURRENCY        | AMERICA                      |
| NLS_DUAL_CURRENCY       | $                            |
+-------------------------+------------------------------+
16 rows in set

```

OceanBase 数据库支持指定非默认字符集与服务器通信。例如，要使用 `gbk` 字符集，在连接到服务器后执行以下语句：

```shell
obclient> SET NAMES gbk;
Query OK, 0 rows affected

```

OceanBase 数据库 Oracle 模式下字符集的默认排序方式为 `bin`，但可以通过 `NLSSORT()` 函数指定其他的排序方式。

```shell
obclient> CREATE TABLE t(a VARCHAR(10));
Query OK, 0 rows affected

obclient> INSERT INTO t VALUES ('a'),('A'),('b'),('B'),('闖'),('闯'),('门'),('醜'),('锌'),('陆'),('ζ');
Query OK, 11 rows affected
Records: 11  Duplicates: 0  Warnings: 0

obclient> SELECT a,NLSSORT(a, 'NLS_SORT=SCHINESE_PINYIN2_M' ) FROM t ORDER BY NLSSORT(a, 'NLS_SORT=SCHINESE_PINYIN2_M' );
+------+------------------------------------------+
| A    | NLSSORT(A,'NLS_SORT=SCHINESE_PINYIN2_M') |
+------+------------------------------------------+
| A    | 41                                       |
| B    | 42                                       |
| a    | 61                                       |
| b    | 62                                       |
| ζ    | A6C6                                     |
| 醜   | FFA01016                                 |
| 闯   | FFA01156                                 |
| 闖   | FFA0115E                                 |
| 陆   | FFA04E35                                 |
| 门   | FFA052DB                                 |
| 锌   | FFA08A0F                                 |
+------+------------------------------------------+
11 rows in set

```

## gb18030 与 gb18030_2022 间的转换

OceanBase 数据库当前版本不支持 `gb18030` 与 `gb18030_2022` 的隐式转换，但用户可以通过 `CONVERT` 将一个 `gb18030` 的字符串的字符集显式转换为 `gb18030_2022`。该转换没有经过 Unicode，采取了保留编码的方法。如下示例所示。

```shell
obclient> CREATE TABLE t1 (c1 VARCHAR(10));
Query OK, 0 rows affected

obclient> INSERT INTO t1 VALUES ('字');
Query OK, 1 row affected

obclient> SELECT RAWTOHEX(c1), RAWTOHEX(CONVERT(c1, 'ZHS32GB18030_2022')) FROM t1;
+--------------+-------------------------------------------+
| RAWTOHEX(C1) | RAWTOHEX(CONVERT(C1,'ZHS32GB18030_2022')) |
+--------------+-------------------------------------------+
| D7D6         | D7D6                                      |
+--------------+-------------------------------------------+
1 row in set

```

由于 OceanBase 数据库 Oracle 模式下的字符集是租户级别的，在使用 `gb18030_2022` 字符集的租户中，所有用户表的 `CHAR`、`VARCHAR2`、`CLOB` 字段都是 `gb18030_2022` 字符集，并且都按照二进制排序（`gb18030_2022_bin`）。在 Oracle 模式下，字符串常量在解析时即被转换为租户字符集，以统一 SQL 的字符集。

```shell
/* gb18030_2022 租户下，列 c 的字符集为 gb18030_2022，字符序为 gb18030_2022_bin */
obclient> CREATE TABLE t1(c VARCHAR(100));
Query OK, 0 rows affected

obclient> INSERT INTO t1 values('字');
Query OK, 1 row affected

/* 设置客户端字符集为 gb18030 */
obclient> SET NAMES gb18030;
Query OK, 0 rows affected

/* SQL 在解析时将字符串 '字' 转换为 gb18030_2022，SQL 正常执行不报错 */
obclient > SELECT * FROM t1 WHERE c = '字';
+------+
| C    |
+------+
| 字    |
+------+
1 row in set

```

## 相关文档

[NLSSORT](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000644247)

[nls_sort](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642423)

[nls_characterset](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642410)

[nls_nchar_characterset](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642518)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
