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

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

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

# 字符集和字符序

更新时间：2026-04-06 15:32:26

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.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 模式下目前支持如下字符集：

- binary
 - utf8mb4

  #### 说明

  为支持无缝迁移，OceanBase 数据库在语法上将 `UTF8` 视为 `UTF8MB4` 的同义词。
 - gbk
 - utf16
 - gb18030
 - latin1
 - gb2312
 - gb18030_2022
 - ascii
 - tis620
 - ujis
 - euckr
 - eucjpms
 - cp932
 - utf16le
 - sjis
 - hkscs
 - hkscs31
 - dec8
 - big5

  #### 说明

  `big5` 字符集是按 MySQL `big5` 字符集做的兼容。
 - cp850
 - hp8
 - macroman
 - swe7

#### 说明

对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持字符集：`gb2312`、`ujis`、`euckr`、`eucjpms`、`cp932`、`cp850`、`hp8`、`macroman` 和 `swe7`。

#### 功能适用性

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_swedish_ci | latin1 | 使用瑞典语/芬兰语排序规则。 |
| latin1_german1_ci | latin1 | 用于德国（German）语言环境下的 latin1 字符集的排序规则。 |
| latin1_danish_ci | latin1 | 用于丹麦（Danish）语言环境下的 latin1 字符集的排序规则。 |
| latin1_german2_ci | latin1 | 用于德语环境，适用于需要按照字典顺序进行字符比较的应用场景。 |
| latin1_general_ci | latin1 | 用于需要不区分大小写且支持重音符号的场景，如某些欧洲语言的数据库设计。 |
| latin1_general_cs | latin1 | 用于区分大小写的通用排序规则，支持多种语言（如西欧语言）。 |
| latin1_spanish_ci | latin1 | 用于西班牙（Spanish）语言环境的排序规则。 |
| 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 | 使用笔画排序规则。区分大小写。 |
| ascii_bin | ascii | 校对规则是基于二进制位比较的。它将字符作为二进制数据进行比较和排序。 |
| ascii_general_ci | ascii | 校对规则是基于字母的不区分大小写的排序规则。它忽略了字符的大小写差异，将大写字母和小写字母视为相同的字符。 |
| tis620_bin | tis620 | 使用二进制排序规则。 |
| tis620_thai_ci | tis620 | 使用泰语排序规则，不区分大小写。 |
| gb2312_chinese_ci | gb2312 | 使用 GB2312 字符集，按照中文排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| gb2312_bin | gb2312 | 使用 GB2312 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| ujis_japanese_ci | ujis | 使用 UJIS 字符集，按照日语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| ujis_bin | ujis | 使用 UJIS 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| euckr_korean_ci | euckr | 使用 EUCKR 字符集，按照韩语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| euckr_bin | euckr | 使用 EUCKR 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| eucjpms_japanese_ci | eucjpms | 使用 EUCJPMS 字符集，按照日语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| eucjpms_bin | eucjpms | 使用 EUCJPMS 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| cp932_japanese_ci | cp932 | 使用 CP932 字符集，按照日语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| cp932_bin | cp932 | 使用 CP932 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| cp850_general_ci | cp850 | 使用 CP850 字符集，按照通用排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| cp850_bin | cp850 | 使用 CP850 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| hp8_english_ci | hp8 | 使用 HP8 字符集，按照英语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| hp8_bin | hp8 | 使用 HP8 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| macroman_general_ci | macroman | 使用 MacRoman 字符集，按照通用排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| macroman_bin | macroman | 使用 MacRoman 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| swe7_swedish_ci | swe7 | 使用 SWE7 字符集，按照瑞典语排序规则进行不区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |
| swe7_bin | swe7 | 使用 SWE7 字符集，按照二进制顺序进行区分大小写的排序。   #### 说明    对于 OceanBase 数据库 V4.3.5 版本，从 V4.3.5 BP1 版本开始支持该字符序。 |

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-1000000004481574)

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

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

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

 上一篇 下一篇 ![有帮助](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) 咨询热线
