最近公司内部的研究开发反映出tomcat的程序日志中发生了乱码,tomcat的输出日志文件的编码格式如下。
$ file xx
xx : iso-8859文本,with very long lines
显示的系统代码如下。
$ env | grep LANG
LANG=zh_CN.UTF-8
接下来,检查tomcat的配置文件“server.xml”。
uri encoding=' utf-8 ' usebodyencodingforuri=' true '
确认这些也没问题,所以要确认java进程的信息。
$ jinfo 15178 | grep file
Attaching to process ID 15178,please wait .
调试器附着successfully。
服务器计算机检测。
file.encoding.pkg=sun.io
file.separator=/
file.encoding=GBK
问题出在这里了。 经过调查一些资料,tomcat的编码处理顺序如下。
file.encoding的默认字符集与操作系统相关,因此中文操作系统下的默认字符集为GBK。 如果在流程定义的xml文件中使用UTF-8,则、
由于无法正确转换,因此必须将file.encoding的值更改为UTF-8
因此,在tomcat的启动脚本(start.sh )中输入以下参数- dfile.encoding=' utf-8 ':export Java _ opts=)xxxxx