在 CentOS 上运行 WebLogic 出现乱码,通常是 字符集(编码)不一致 导致的。下面按「最常见 → 进阶」逐步排查和修复。
locale
echo $LANG
正常应为(推荐):
LANG=zh_CN.UTF-8
或
LANG=en_US.UTF-8
如果不是 UTF-8,先修复系统编码:
localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
export LANG=zh_CN.UTF-8
永久生效(CentOS 6/7):
vi /etc/locale.conf
LANG="zh_CN.UTF-8"
setDomainEnv.sh路径一般在:
$DOMAIN_HOME/bin/setDomainEnv.sh
在文件末尾或 JAVA_OPTIONS 处添加:
export JAVA_OPTIONS="$JAVA_OPTIONS -Dfile.encoding=UTF-8"
⚠️ 很多乱码问题 只加这一句就能解决
环境 → 服务器 → 你的Server → 配置 → 日志
确保:
UTF-8commEnv.sh$WLS_HOME/common/bin/commEnv.sh
确认有:
JAVA_OPTIONS="$JAVA_OPTIONS -Dfile.encoding=UTF-8"
<%@ page contentType="text/html;charset=UTF-8" %>
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
file *.log
如果是 ISO-8859,说明 WebLogic 启动时不是 UTF-8。
服务器 → 日志 → 高级 → 编码:UTF-8
如果是 中文存数据库乱码:
SELECT parameter, value FROM nls_database_parameters
WHERE parameter LIKE '%CHARACTERSET%';
应为 AL32UTF8
?useUnicode=true&characterEncoding=UTF-8
✅ CentOS:LANG=zh_CN.UTF-8
✅ WebLogic:-Dfile.encoding=UTF-8
✅ JSP:charset=UTF-8
✅ 数据库:UTF-8
你可以告诉我:
我可以直接给你 精确改法。