Tomcat日志中文乱码怎么解决

Tomcat日志中文乱码怎么解决,第1张

在Tomcat中有时输出的日志中文为乱码,包括控制台窗口和输出日志文件中都为乱码。
解决方案
JDK引用的设置
Java引用参数添加"-Dfileencoding=UTF8 -Dsunjnuencoding=UTF8"
将上面参数添加到Catalinash中JAVA_OPTS变量中,重启Tomcat,OK了。

是由于DOS窗口显示的编码同logcat日志中不同导致的乱码问题。DOS窗口默认的编码是GBK,而LogCat打印的是UTF-8的编码,所以要设置DOS字符编码:
1, 在当前命令行下输入 chcp 65001,按回车键。这时,当前代码页使用的就是UTF-8编码了。
2, 修改窗口属性,改变字体。在命令行标题栏上点击右键,选择“属性”->“字体””,将字体修改为True Type字体”Lucida Console”,然后点击确定将属性应用到当前窗口。
3,再使用logcat打印日志,就可以正常显示中文字符了。
4, 补充部分字符编码对应代码:
65001——UTF-8
936——简体中文
950——繁体中文
437——美国/加拿大英语
932——日文
949——韩文
866——俄文

解决方法如下:

如果是log4jproperties为配置文件,比如:

[c-sharp] view plaincopy

log4jappenderA1=orgapachelog4jRollingFileAppender

log4jappenderA1File=alllog
加入一行:
[c-sharp] view plaincopy

log4jappenderA1=orgapachelog4jRollingFileAppender

log4jappenderA1Encoding=UTF-8

log4jappenderA1File=alllog
如果是log4jxml为配置文件,比如:

[c-sharp] view plaincopy

<appender name="A1" class="orgapachelog4jRollingFileAppender">

<param name="File" value="alllog" />

</appender>
加入一行:

[c-sharp] view plaincopy

<appender name="A1" class="orgapachelog4jRollingFileAppender">

<param name="Encoding" value="UTF-8" />

<param name="File" value="alllog" />

</appender>
原理:

log4j通过QuietWriter写日志,QuietWriter extends FilterWriter,FilterWriter extends Writer,而Writer写入的是字符流,对字符集比较敏感。英文系统一般默认latin-1字符集,只能处理半角,通过encoding指定字符集后,能够正确输出指定字符集的字符流。

字符集指定后,WriterAppender的setEncoding通过orgapachelog4jconfigPropertySettersetProperties(Object obj, Properties properties, String prefix)设置字符集。

1、先切换到:cd usr/local/tomcat5/logs
2、tail -f catalinaout
3、这样运行时就可以实时查看运行日志了
Ctrl+c 是退出tail命令。

tomcat出现中文乱码问题有以下几种情况:

乱码原因 :这是由于windows下的cmd的默认编码是GBK编码,Tomcat控制台默认输出设置为UTF-8编码

解决方法

解决办法
先检查tomcat下conf/loggingproperties配置文件
查看是否ConsoleHandlerencoding=utf-8,如果是则说明tomcat编码没有问题,出问题的是idea编码,如果不等于utf-8,则改为utf-8一般情况下此时可以正常输出tomcat日志信息。

requestgetParameter()打印出来是乱码
原因一 :idea控制台显示编码问题,idea的控制台显示使用的jvm默认编码为win系统的GBK编码,更改jvm编码格式为UTF-8

解决办法:

乱码原因: 服务器发给浏览器的数据默认是按照ISO-8859-1编码,浏览器接收到数据后按照默认的字符集进行解码后显示,如果浏览器的默认解码字符集不是ISO-8859-1,就出现乱码。

执行echo $LANG命令输出的是当前的编码方式,执行locale命令得到系统中所有可用的编码方式。要让Xshell不显示乱码,则要将编码方式改为UTF-8。
在Xshell中[file]-> [open] -> 在打开的session中选择连接的那个,点击properties ->[Terminal],在右边translation中选择UTF-8,再重新连接服务器即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12699433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存