---
title: Oracle 租户 GBK 字符集生僻字显示乱码-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 Oracle 租户 GBK 字符集生僻字显示乱码相关的常见问题和使用技巧，帮助您快速解决 Oracle 租户 GBK 字符集生僻字显示乱码的难题。
---
切换语言

- 简体中文
- English

划线反馈

# Oracle 租户 GBK 字符集生僻字显示乱码

更新时间：2026-05-18 09:11

适用版本： V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x 内容类型：Troubleshoot  

## 问题现象

OceanBase 数据库 Oracle 租户，租户字符集是 GBK，插入生僻字显示乱码。

测试示例如下。

1. 创建表。

   ```shell
   obclient > create table t1 (id number,name varchar2(10),client_charset varchar2(10) ,terminal_charset varchar2(10));

   ```
 2. 终端 UTF8 插入数据。

   ```shell
   obclient > set names  utf8mb4;

   ```

   ```shell
   obclient > insert into t1 values(1,'匼','utf8mb4' ,'utf8') ;

   ```

   ```shell
   obclient > set names gbk;

   ```

   ```shell
   obclient > insert into t1 values(2,'匼','gbk' ,'utf8') ;

   ```
 3. 终端 GBK 插入数据。

   ```

   ```shell
   obclient > insert into t1 values(3,'匼','utf8mb4' ,'gbk') ;

   ```

   ```

   ```shell
   obclient > insert into t1 values(4,'匼','gbk' ,'gbk') ;

   ```
 4. 查询验证。
 5. 终端 GBK 客户端 UTF8 查询。

   ```

   ```shell
   obclient > select id,name,client_charset,terminal_charset,dump(name,16)  from t1;

   ```

   ```shell
     +------+------+----------------+------------------+------------------------+
     | ID   | NAME | CLIENT_CHARSET | TERMINAL_CHARSET | DUMP(NAME,16)          |
     +------+------+----------------+------------------+------------------------+
     |    1 | 鍖  | utf8mb4        | utf8             | Typ=22 Len=2: 85,5c    |
     |    2 | 閸  | gbk            | utf8             | Typ=22 Len=3: e5,8c,bc |
     |    3 | ?\   | utf8mb4        | gbk              | Typ=22 Len=2: 3f,5c    |
     |    4 | 鍖  | gbk            | gbk              | Typ=22 Len=2: 85,5c    |
     +------+------+----------------+------------------+------------------------+
     4 rows in set (0.005 sec)

   ```
 6. 终端 GBK，客户端 GBK 查询。

   ```

   ```

   ```shell
     +------+------+----------------+------------------+------------------------+
     | ID   | NAME | CLIENT_CHARSET | TERMINAL_CHARSET | DUMP(NAME,16)          |
     +------+------+----------------+------------------+------------------------+
     |    1 | 匼    | utf8mb4        | utf8             | Typ=22 Len=2: 85,5c    |
     |    2 | 鍖  | gbk            | utf8             | Typ=22 Len=3: e5,8c,bc |
     |    3 | ?\   | utf8mb4        | gbk              | Typ=22 Len=2: 3f,5c    |
     |    4 | 匼    | gbk            | gbk              | Typ=22 Len=2: 85,5c    |
     +------+------+----------------+------------------+------------------------+
     4 rows in set (0.002 sec)

   ```
 7. 终端 UTF8 客户端 UTF8 查询。

   ```

   ```shell
   obclient > set names utf8mb4;
   Query OK, 0 rows affected (0.002 sec)

   ```

   ```

   ```shell
     +------+------+----------------+------------------+------------------------+
     | ID   | NAME | CLIENT_CHARSET | TERMINAL_CHARSET | DUMP(NAME,16)          |
     +------+------+----------------+------------------+------------------------+
     |    1 | 匼   | utf8mb4        | utf8             | Typ=22 Len=2: 85,5c    |
     |    2 | 鍖   | gbk            | utf8             | Typ=22 Len=3: e5,8c,bc |
     |    3 | ?\   | utf8mb4        | gbk              | Typ=22 Len=2: 3f,5c    |
     |    4 | 匼   | gbk            | gbk              | Typ=22 Len=2: 85,5c    |
     +------+------+----------------+------------------+------------------------+
     4 rows in set (0.007 sec)

   ```
 8. 终端 UTF8 客户端 GBK 查询。

   ```shell
   obclient > set names gbk;
   Query OK, 0 rows affected (0.002 sec)

   ```

   ```

   ```shell
     +------+------+----------------+------------------+------------------------+
     | ID   | NAME | CLIENT_CHARSET | TERMINAL_CHARSET | DUMP(NAME,16)          |
     +------+------+----------------+------------------+------------------------+
     |    1 |   | utf8mb4        | utf8             | Typ=22 Len=2: 85,5c    |
     |    2 | 匼   | gbk            | utf8             | Typ=22 Len=3: e5,8c,bc |
     |    3 | ?\   | utf8mb4        | gbk              | Typ=22 Len=2: 3f,5c    |
     |    4 |   | gbk            | gbk              | Typ=22 Len=2: 85,5c    |
     +------+------+----------------+------------------+------------------------+
     4 rows in set (0.002 sec)

   ```

#### 说明

1. 当客户端类型和终端字符集类型一致时，插入到数据库的 16 进制 是符合数据库编码的 “匼”字 的 GBK 编码为：855C。
 2. 当客户端和终端字符集类型一致时，可以正常显示字符。
 3. 当客户端类型和和数据库字符集类型一致时（同为 GBK），插入的值是终端类型的编码：TERMINAL_CHARSET = GBK 插入 “匼”的 GBK 编码；TERMINAL_CHARSET = UTF8 插入 “匼”的 UTF8 编码。

## 适用版本

OceanBase V2.x、V3.x 版本。

## 问题原因

终端、客户端和数据库 server 字符集不一致。

## 解决方法

终端设置 GBK 字符集显示，客户端先设置 `set names gbk`，使 client、connection、server 的字符集一致，解决乱码问题。

Previous

[如何为 Oracle 租户配置 GBK 字符集](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000001048)

Next

[MySQL 模式下字符集错误](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000077) ![有帮助](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) 咨询热线
