You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中PL/SQL导出CSV文件时Excel字符显示异常问题求助

解决方案

方法1:为UTF-8编码的CSV添加BOM头

Excel默认无法识别无BOM的UTF-8文件,在PL/SQL导出时给文件开头写入UTF-8 BOM(0xEF, 0xBB, 0xBF)即可解决。修改后的PL/SQL示例:

DECLARE
  v_file UTL_FILE.FILE_TYPE;
BEGIN
  v_file := UTL_FILE.FOPEN('EXPORT_DIR', 'data.csv', 'w', 32767);
  -- 写入UTF-8 BOM标识
  UTL_FILE.PUT_RAW(v_file, HEXTORAW('EFBBBF'), TRUE);
  -- 写入表头与数据
  UTL_FILE.PUT_LINE(v_file, '列名1,列名2,列名3');
  -- 此处添加你的数据循环写入逻辑
  UTL_FILE.FCLOSE(v_file);
EXCEPTION
  WHEN OTHERS THEN
    IF UTL_FILE.IS_OPEN(v_file) THEN
      UTL_FILE.FCLOSE(v_file);
    END IF;
    RAISE;
END;
/

方法2:指定导出编码为GBK/GB2312

如果数据以中文为主,直接用Excel原生支持的GBK编码导出,修改PL/SQL的文件打开逻辑:

-- 方式1:使用FOPEN指定编码
v_file := UTL_FILE.FOPEN('EXPORT_DIR', 'data.csv', 'w', 32767, 'GBK');
-- 方式2:使用FOPEN_NCHAR(依赖数据库NLS_NCHAR_CHARACTERSET参数为GBK类编码)
v_file := UTL_FILE.FOPEN_NCHAR('EXPORT_DIR', 'data.csv', 'w', 32767);

方法3:通过Excel导入向导打开CSV

无需修改导出代码,手动导入可强制指定编码:

  1. 打开空白Excel工作簿,切换到「数据」选项卡
  2. 点击「自文本/CSV」,选择目标CSV文件
  3. 在导入窗口中选择对应编码(如UTF-8),完成后续导入步骤

补充说明

NLS_LANGUAGE主要控制数据库会话的语言显示,对UTL_FILE导出的文件编码影响极小,核心问题是导出文件编码与Excel默认识别编码不匹配。若使用PL/SQL Developer工具导出,可直接在导出设置中选择「UTF-8 with BOM」编码,无需手动编写代码。

内容的提问来源于stack exchange,提问作者guray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:23:24