根本原因是Oracle 11g自带JDK缺失中文字体且NLS_LANG未正确配置;必须解包all.jar注入simsun.ttf至fallback目录,并在oracle用户~/.bash_profile中设置NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"和LANG="zh_CN.UTF-8",再刷新X11字体缓存。

Oracle 11g 在 CentOS 7 图形化安装界面中出现中文乱码,根本原因是 JDK 内置字体缺失 + 系统 locale 与 Oracle 安装器的 NLS_LANG 不匹配。不是改个环境变量就能彻底解决,必须双管齐下。
安装前必须补全中文字体文件
Oracle 11g 自带的 JDK(oracle.jdk/1.5.0.17.0)不包含中文字体,图形安装器启动后直接 fallback 到无衬线英文字符,导致按钮、提示框全是方块或问号。
- 解压安装包后,进入
database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles - 找到
all.jar,用jar -xf all.jar解包 - 新建目录
fallback,把simsun.ttf(或zysong.ttf)复制进去 - 重新打包:
jar -cf all.jar *(确保fallback/目录在根层级) - 这一步漏掉,后续所有环境变量设置都无效
NLS_LANG 必须在 oracle 用户 shell 中生效
只改 root 的 /etc/profile 或 Windows 客户端注册表,对 runInstaller 进程完全没用——它由 oracle 用户以 X11 方式启动,只读取该用户的登录 shell 环境。
- 切换到 oracle 用户:
su - oracle - 编辑
~/.bash_profile,追加两行:
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" export LANG="zh_CN.UTF-8"
- 执行
source ~/.bash_profile,再验证:echo $NLS_LANG必须输出非空值 - 注意:不能设成
AL32UTF8,Oracle 11g 安装器对 UTF-8 字体渲染支持极差,ZHS16GBK 才能触发正确字体回退逻辑
DISPLAY 和字体缓存需同步清理
即使字体和 NLS_LANG 都对了,X11 服务端(如 Xmanager 或 VNC)可能缓存旧字体映射,导致重启安装器仍乱码。
- 确认 DISPLAY 可达:
xclock能弹窗才算通 - 在 oracle 用户下运行:
fc-cache -fv强制刷新字体缓存 - 如果用 Xmanager,退出重连;如果用 GNOME 桌面,注销当前 session 再登录
- 启动安装器前,先执行:
xset fp rehash,刷新 X Server 字体路径
最容易被忽略的是 all.jar 替换步骤——很多人以为改完 NLS_LANG 就行,结果反复重装三次才发现是字体包没动。Oracle 11g 的安装器是静态绑定 JDK 的,不替换 jar 包,它根本“看不见”你后来装的系统字体。


















