在 Ubuntu 上使用 Oracle(通常是 Oracle Instant Client / Oracle DB / sqlplus) 出现中文乱码,一般是字符集不一致导致的。可以按下面步骤排查和解决。
乱码通常是以下一种或多种情况:
NLS_LANGSELECT parameter, value
FROM nls_database_parameters
WHERE parameter IN ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
常见结果:
AL32UTF8 ✅(推荐)ZHS16GBKlocale
如果不是 UTF-8,执行:
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
重新登录或重启终端。
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
✅ 建议写入 .bashrc 或 .profile:
echo 'export NLS_LANG=AMERICAN_AMERICA.AL32UTF8' >> ~/.bashrc
source ~/.bashrc
确保终端是 UTF-8:
echo $LANG
# 应该是 zh_CN.UTF-8 或 en_US.UTF-8
jdbc:oracle:thin:@host:1521:orcl?useUnicode=true&characterEncoding=UTF-8
import os
os.environ["NLS_LANG"] = "AMERICAN_AMERICA.AL32UTF8"
locale 是 UTF-8NLS_LANG 已设置如果你愿意,可以告诉我:
我可以直接给你精确配置命令。