Java Intelli-j tomcat服务器控制台编码问题与log4j';s编码=UTF-8?

Java Intelli-j tomcat服务器控制台编码问题与log4j';s编码=UTF-8?,java,tomcat,intellij-idea,encoding,utf-8,Java,Tomcat,Intellij Idea,Encoding,Utf 8,我有一个奇怪的问题,我使用log4j将日志打印到打印错误字符的控制台,但使用System.out.println可以正常工作 我已明确将编码设置为UTF-8: log4j.rootLogger=DEBUG,console,error ####################Conole logs###################### log4j.appender.console= org.apache.log4j.ConsoleAppender log4j.appender.console

我有一个奇怪的问题,我使用
log4j
将日志打印到打印错误字符的控制台,但使用
System.out.println
可以正常工作

我已明确将编码设置为UTF-8:

log4j.rootLogger=DEBUG,console,error
####################Conole logs######################
log4j.appender.console= org.apache.log4j.ConsoleAppender
log4j.appender.console.encoding=UTF-8  ###Here , if I commented this line, it works fine
log4j.appender.console.Threshold = DEBUG
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
同一行,我使用:

        LogUtil.debug(line);
        System.out.println("from system.out: "+line);
控制台:

DEBUG - 閭d簺骞存垜浠竴璧疯拷杩囩殑濂冲=鑷存垜浠粓灏嗛�濆幓鐨勯潚鏄�
from system.out: 那些年我们一起追过的女孩=致我们终将逝去的青春
但是如果我注释掉了
log4j.appender.console.encoding=UTF-8
,它就可以工作了

请注意,当我以前使用eclipse时,exsting代码工作正常,但今天我尝试在IDEA14上运行它,然后发现问题

我猜这可能是默认控制台上的一些编码设置问题


PS:我也将项目的编码设置为UTF-8,Java使用环境提示在
System.out
上设置适当的编码,例如
locale
或codepage(
chcp

另外,Intellij使用项目的字符编码来设置解释的控制台编码


通过在Log4j中定义编码,您可能会重复编码或选择错误的编码,正如您所发现的。

如果您没有在Log4j中指定编码,则将使用平台的默认编码

您可以更改Intellij中的编码以匹配log4j中的编码()


我不使用IntelliJ,所以我没有尝试过。

这也是我的猜测。当您显式指定log4j的编码时,它将覆盖默认行为。我相信默认行为是让System.Out.Print()函数负责编码转换。我将项目编码设置为utf-8,那么您的意思是我对消息进行了双重编码:
通过在Log4j中定义编码,您可能会进行双重编码