以前使用Eclipse,现在尝试IDEA,遇到了几个漏洞,在网上的答案几乎都解决了,但是也有像这个问题这样的答案不好的。
1、原因分析
Tomcat运行Java Web程序,并将显示输出到IDEA控制台。 我们通常用UTF8编码。
从Java源代码到IDEA控制台,大致分为几个阶段:
1 )源代码(即*.java原始文件是纯文本文件。
编码方式通过IDEA的SettingsEditorFile Encodings设定;
2 )编译器)将源代码编译为*.class文件。
调用JDK的javac编译器实现,通常使用以下命令指定编码:
javac -encoding utf-8 xxxx.java
IDE通常是基于源文件的格式设置的。 编译今后的Java类文件,在内部统一用UTF16编码。
3 )执行环境),即,在Java执行环境中执行编译的Java程序。
这里主要涉及命令行输出,在运行Java程序时,根据输出环境将内部UTF16编码转换为响应代码。
写入日志时调用系统标准输出,缺省情况下使用系统缺省编码。 中文窗口S10通常是GBK,也就是cp936。 可以用chcp命令显示。
4 ) Tomcat日志输出程序一般调用系统的标准输出。
Tomcat本身的日志输出由% Tomcat _ home %/conf/logging.properties文件组成,通常默认值为UTF8。
5 ) IDEA的控制台输出。
Tomcat日志重定向到IDEA的控制台输出。 IDEA的控制台代码。 在SettingsEditorGeneralConsole中设定。 缺省值通常为系统代码,即GBK。
日志输出通常会乱码,这是因为上述步骤中的某个代码不匹配。
2、解决办法
关于我面临的问题,只要将IDEA的SettingsEditorGeneralConsole的代码设为UTF-8即可。