Shelton

Weblogic乱码解决过程

Weblogic乱码解决过程

起因

今天在公司部署项目的时候,在Weblogic下部署服务的过程中遇到了Jsp页面乱码的问题,现将修复过程分享出来。[以下修复基于Weblogic_10.3.6.0、JDK为1.6环境]

问题描述

目前有一套代码,原本是跑在Tomcat上的,如今移植到Weblogic中去,JSP页面乱码、在Oracle中取出的数据都也出现了乱码。

修复过程

先检查以下文件

1. 检查系统i18n文件

  • 检查Weblogic所处系统下的i18n文件是否正确
1
cat /etc/sysconfig/i18n
  • 得到的结果是,证明系统的编码没有问题
1
2
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

2. 检查并修改项目下的pom.xml文件中如下,设置UTF-8编码[若不是Maven项目,请跳过],当前Maven项目Version:3.3.9

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
...
</properties>
<!-- Compiler 插件, 设定JDK版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<showWarnings>true</showWarnings>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- resource插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

3. 检查并修改项目WEB-INF下的web.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>

4. 检查并修改项目WEB-INF下的weblogic.xml:

1
2
3
4
5
6
7
8
9
10
11
12
<jsp-descriptor>
<jsp-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</jsp-param>
</jsp-descriptor>
<charset-params>
<input-charset>
<resource-path>/</resource-path>
<java-charset-name>UTF-8</java-charset-name>
</input-charset>
</charset-params>

5. 检查并查看Weblogic的启动文件startWeblogic.sh,找到

1
2
JAVA_OPTIONS="${JAVA_OPTIONS}"
export JAVA_OPTIONS

这一段,改成以下:

1
2
JAVA_OPTIONS="${JAVA_OPTIONS} -Dfile.encoding=utf8"
export JAVA_OPTIONS

然后保存、重启服务:

1
nohup ./startWeblogic & tail -f nohup.out

总结

在此修复过程中,从项目源码、项目打包、Weblogic环境整个过程都检查了遍,对于项目部署乱码这块认识更加深刻,途中也找了查阅了相关资料,最终得以解决,在此将相关解决过程整合以便今后查阅。