文档

通过ODC连接OceanBase数据库执行查询操作时出现查询结果集为乱码的情况

更新时间:
一键部署

问题描述

通过ODC连接阿里云云数据库OceanBase,执行查询操作时,出现查询结果集为乱码的情况。

问题原因

出现乱码的原因是客户端的编码和数据库认为的客户端编码不一致。ODC客户端的编码根据服务器系统的不同分以下几种情况:

位置

Linux

Mac

Windows

SQL窗口

UTF8

UTF8

UTF8

命令行窗口

UTF8

UTF8

GBK

解决方案

请执行以下操作,调整数据库认为客户端使用的字符集:

  1. 在数据库中执行以下SQL语句,查看数据库认为的客户端编码。
    show variables like '%character_set_c%';
    show variables like '%character_set_r%';
    • 系统显示类似如下,说明数据的字符集是GBK,且数据库认为客户端使用的字符集也是GBK。
      character_set_client gbk
      character_set_connection gbk
      character_set_filesystem binary
      character_set_results gbk
      character_set_system gbk
    • 系统显示类似如下,说明数据的字符集是utf8mb4,且数据库认为客户端使用的字符集也是utf8mb4。
      character_set_client utf8mb4
      character_set_connection utf8mb4
      character_set_filesystem binary
      character_set_results utf8mb4
      character_set_system utf8mb4
  2. 请根据上一步查询的实际返回结果,执行以下操作:
    • 调整数据库认为客户端使用的字符集为GBK,将其与实际客户端的字符集兼容。
      set names gbk;
    • 调整数据库认为客户端使用的字符集为utf8mb4,将其与实际客户端的字符集兼容。

      set names utf8mb4;
  3. 调整完成后,在当前session内再执行SQL ,查看结果集时,即可避免中文乱码问题。

更多信息

如果Mac服务器中安装ODC后,导入文件到OceanBase数据库时,中文内容出现乱码的情况,则需要保证导入文件编码和数据库认为客户端使用的字符集保持一致即可。

适用于

  • 云数据库OceanBase
  • 本页导读