Tomcat日志乱码(任选其一)
设置系统编码
查看系统是否有中文包
locale -a
如果没有中文包 安装中文包
yum groupinstall chinese-support
查看系统默认语言
echo $LANG
显示zh_CN.UTF-8
说明系统的默认编码就是中文编码
方法一
先设置系统编码
vi /etc/sysconfig/i18n
默认为:
1 | LANG="en_US.UTF-8" |
修改为:
1 | LANG="zh_CN.UTF-8" |
使文件立即生效:
1 | source /etc/sysconfig/i18n |
方法二
或者修改profile
文件
1 | vi /etc/profile |
在文件最后加上:
1 | export LC_ALL="zh_CN.UTF-8" |
使文件立即生效:
1 | source /etc/profile |
查看编码是否改变:
1 | echo $LANG |
设置jvm编码
1) 从tomcat的bin目录的sh启动tomcat
在catalina.sh
找到JAVA_OPTS
配置为JAVA_OPTS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"
如果要注册为服务 则修改的文件为daemon.sh
后续:
我之前直接在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参数的乱码问题
假设编码用utf-8
这里不建议下面配置,尽量不更改服务器的配置,因为这个可以从代码中解决
解决:在server.xml
的connector
中增URIEncoding="utf-8"
Tomcat启动时端口占用
我启动Tomcat的时候有删日志的习惯
但是老是停止tomcat service tomcat stop
后
再启动tomcatservice tomcat start
就会报端口占用
原来日志目录tomcat/logs
下有一个文件catalina-daemon.pid
它是用来保存tomcat启动的进程ID
一旦把这个文件删了 停用tomcat时 它就没杀死对应的进程 导致再次启动时 端口占用
所以删日志文件时 千万别删catalina-daemon.pid
这个文件