IDEA中Tomcat日志乱码问题解决

       以前一直使用Eclipse,现在试用IDEA,遇到一些坑,通过网上的答案基本都解决了,但有些答案不好,比如这个问题。

1、原因分析

     Tomcat运行Java Web的程序,在IDEA控制台中输出显示,我们一般都是用UTF8编码。

     从Java源码到IDEA控制台,大致分为几个阶段:

     1)源码:即*.java原文件,是纯文本文件。

     编码方式在IDEA的Settings>Editor>File Encodings中设置;

     2)编译器:将源码编译成*.class文件。

     调用JDK的javac编译器实现,通常可以使用下述命令指定编码:

           javac -encoding utf-8 xxxx.java

     通常IDE会根据源文件格式设置。编译以后的Java类文件,内部统一用UTF16编码。

     3)运行环境:即通过Java运行环境运行编译后的Java程序。

     这里涉及的主要是命令行输出,Java程序运行时,会根据输出环境,将内部的UTF16编码转换成响应编码。   

     写入日志会调用系统标准输出,默认使用的是系统默认编码,中文Windows10一般是GBK(即cp936)。可以通过chcp命令查看。

     4)Tomcat日志输出程序,一般调用系统的标准输出。

       Tomcat本身的日志输出,通过%TOMCAT_HOME%/conf/logging.properties文件来配置,一般缺省是UTF8。

     5)IDEA的控制台输出。

      Tomcat日志,会被重定向到IDEA的控制台输出。IDEA的控制台编码,在Settings>Editor>General>Console中设置。一般默认是系统编码,即GBK。

      通常日志输出乱码,必然是上述步骤某处的编码不一致。

2、解决办法

    就我遇到的问题来说,把IDEA中Settings>Editor>General>Console的编码设为UTF-8即可。

你可能感兴趣的:(Java编程,tomcat,intellij-idea)