Tomcat 日志及参数的乱码问题

查看系统语言

echo $LANG

显示zh_CN.UTF-8说明系统支持中文编码

查看系统是否有中文包

locale

安装中文包

yum groupinstall chinese-support

Tomcat乱码解决

假设编码用utf-8

tomcat日志乱码

设置系统编码

先设置系统编码

vi /etc/sysconfig/i18n

默认为:

LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

修改为:

LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"

保存后执行

source /etc/sysconfig/i18n

设置jvm编码

1) 从tomcat的bin目录的sh启动tomcat

catalina.sh找到JAVA_OPTS配置为JAVA_OPTS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"

注:这个参数必须在jvm启动时加上,在程序中通过设置system property的方式是没有效果的,原因是jvm启动时读取file.encodingcache,后续只使用启动时读取的编码。 后续:

我之前直接在catalina.sh的最上方添加了JAVA_OPTS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"配置 
但是发现配置并不生效 日志仍为乱码
原来catalina.sh中间位置有个这样的配置JAVA_OPTS=
他又把JAVA_OPTS给置空了 怪不得配置不生效

解决方法有两种

  • JAVA_OPTS=后面直接添加编码配置
  • 在下一行添加 JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"

推荐后面这一种 不修改原配置 添加新配置才更合理

2) 从服务中启动tomcat

如果tomcat已配置为服务 则要修改修改/etc/rc.d/init.d目录下对应的文件
假如服务为tomcat 就修改tomcat文件 修改方式同上

tomcat参数的乱码问题

这里不建议下面配置,尽量不更改服务器的配置,因为这个可以从代码中解决

解决:在server.xmlconnector中增URIEncoding="utf-8"

Tomcat启动老是端口占用

我启动Tomcat的时候有删日志的习惯 但是老是停止tomcat service tomcat stop
再启动tomcatservice tomcat start 就会报端口占用

原来日志目录tomcat/logs下有一个文件catalina-daemon.pid 它是用来保存tomcat启动的进程ID
一旦把这个文件删了 停用tomcat时 它就没杀死对应的进程 导致再次启动时 端口占用
所以删日志文件时 千万别删catalina-daemon.pid这个文件


原贴转自:http://www.psvmc.cn/tomcat-encrypt.html。

posted on 2017-01-06 11:13  chaiyu2002  阅读(315)  评论(0编辑  收藏  举报

导航