在 CentOS 上部署 WebLogic 出现乱码(中文乱码、日志乱码、页面乱码等),通常和 系统字符集、JVM 编码、WebLogic 配置、应用编码 有关。下面按最常见原因 + 解决步骤说明。
locale
echo $LANG
正常应是:
LANG=zh_CN.UTF-8
sudo localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
编辑:
sudo vi /etc/locale.conf
内容:
LANG="zh_CN.UTF-8"
重启或重新登录。
WebLogic 默认可能使用 ISO-8859-1,必须显式指定 UTF-8。
setDomainEnv.sh路径示例:
$DOMAIN_HOME/bin/setDomainEnv.sh
在文件末尾或 JAVA_OPTIONS 处添加:
export JAVA_OPTIONS="$JAVA_OPTIONS -Dfile.encoding=UTF-8"
export JAVA_OPTIONS="$JAVA_OPTIONS -Duser.language=zh"
export JAVA_OPTIONS="$JAVA_OPTIONS -Duser.region=CN"
重启 WebLogic:
stopWebLogic.sh
startWebLogic.sh
登录 WebLogic Console:
环境 → 服务器 → 你的Server → 配置 → 常规
确认:
config.xml<server>
<name>AdminServer</name>
<client-certificate-enforced>false</client-certificate-enforced>
<locale>zh_CN</locale>
<web-app-container>
<jsp-encoding>UTF-8</jsp-encoding>
</web-app-container>
</server>
<%@ page contentType="text/html;charset=UTF-8" %>
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
<filter>
<filter-name>encodingFilter</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>
JDBC URL:
jdbc:oracle:thin:@IP:1521:ORCL?useUnicode=true&characterEncoding=UTF-8
数据库本身:
SELECT userenv('language') FROM dual;
-- 应为 SIMPLIFIED CHINESE_CHINA.AL32UTF8
jdbc:mysql://ip:3306/db?useUnicode=true&characterEncoding=UTF-8
vi $DOMAIN_HOME/bin/setDomainEnv.sh
确保:
-Dfile.encoding=UTF-8
less -r logfile.log
或
cat logfile.log
-Dfile.encoding=UTF-8你可以告诉我:
我可以直接给你对应配置文件修改示例。