很少接触weblogic,今天同事出现了一个中文乱码问题,程序运行在本机windows环境是好的,但是放在linux上的weblogic上却乱码了,怀疑是linux系统的编码问题,查看用户进入根目录 /etc/sysconfig/i18n,内容如下:
[html] view plaincopy
-
LANG="zh_CN.UTF-8"
-
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
-
SYSFONT="latarcyrheb-sun16"
很显然操作系统的编码是没问题的。那么问题一定处在weblogic上了,首先查看weblogic使用的是什么编码,查看方式如下:
[html] view plaincopy
-
在severs/AdminServer/logs目录下的AdminServer.log中搜索file.encoding,会显示启动时使用的文件编码
看到weblogic使用的GB2312,这样就清楚了,需要修改weblogic的编码格式,修改方式如下:
[html] view plaincopy
-
在startWeblogic.sh中添加
-
${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dweblogic.Name=${SERVER_NAME}
-
<span style="color:#33CC00"><strong>-Dweblogic.webservice.i18n.charset=utf-8</strong></span> Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy
-
${PROXY_SETTINGS} {SERVER_CLASS}
修改完成后,重启weblogic服务。
另:如何修改操作系统的编码格式,在.bash_profile中添加如下:
[html] view plaincopy
-
export LC_ALL="zh_CN.UTF-8"
-
export LANG="zh_CN.UTF-8"
或者修改/etc/sysconfig/i18n文件,内容如下:
[html] view plaincopy
-
LANG="zh_CN.UTF-8"
-
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
-
SYSFONT="latarcyrheb-sun16"
这样使用locale查看到的信息如下:
[html] view plaincopy
-
LANG="zh_CN.UTF-8"
-
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
-
SYSFONT="latarcyrheb-sun16"
-
[root@asiainfo1 ~]# locale
-
LANG=zh_CN.UTF-8
-
LC_CTYPE="zh_CN.UTF-8"
-
LC_NUMERIC="zh_CN.UTF-8"
-
LC_TIME="zh_CN.UTF-8"
-
LC_COLLATE="zh_CN.UTF-8"
-
LC_MONETARY="zh_CN.UTF-8"
-
LC_MESSAGES="zh_CN.UTF-8"
-
LC_PAPER="zh_CN.UTF-8"
-
LC_NAME="zh_CN.UTF-8"
-
LC_ADDRESS="zh_CN.UTF-8"
-
LC_TELEPHONE="zh_CN.UTF-8"
-
LC_MEASUREMENT="zh_CN.UTF-8"
-
LC_IDENTIFICATION="zh_CN.UTF-8"
-
LC_ALL=zh_CN.UTF-8