最近在IDEA上配置Tomcat服务器的时候控制台的日志文件出现中文乱码,然后在网上找了很多种办法都没有效果,最后自己鼓捣了一下还是解决了,并不是像其他人的那么复杂改这改那,改各种配置文件。不用那么麻烦!!!
先来看一下我的中文乱码:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
31-Aug-2020 19:40:07.386 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.鏈嶅姟鍣ㄧ増鏈�: Apache Tomcat/9.0.30
31-Aug-2020 19:40:07.386 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鏈嶅姟鍣ㄦ瀯寤�: Dec 7 2019 16:42:04 UTC
31-Aug-2020 19:40:07.386 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鏈嶅姟鍣ㄧ増鏈彿(锛�9.0.30.0
31-Aug-2020 19:40:07.386 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Windows 10
31-Aug-2020 19:40:07.386 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.鐗堟湰: 10.0
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鏋舵瀯: amd64
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 鐜鍙橀噺: C:\Program Files\Java\jdk-13.0.2
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM 鐗堟湰: 13.0.2+8
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.渚涘簲鍟�: Oracle Corporation
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\Users\y1833\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_30_firstWeb
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: D:\Apache\tomcat\apache-tomcat-9.0.30
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\Users\y1833\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_30_firstWeb\conf\logging.properties
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote=
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.port=1099
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.ssl=false
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.password.file=C:\Users\y1833\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_30_firstWeb\jmxremote.password
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.access.file=C:\Users\y1833\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_30_firstWeb\jmxremote.access
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.rmi.server.hostname=127.0.0.1
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\Users\y1833\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_30_firstWeb
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=D:\Apache\tomcat\apache-tomcat-9.0.30
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=D:\Apache\tomcat\apache-tomcat-9.0.30\temp
31-Aug-2020 19:40:07.396 淇℃伅 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk-13.0.2\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\Java\jdk-13.0.2\bin;D:\mysql_project\bin;C:\Users\y1833\AppData\Local\Microsoft\WindowsApps;;D:\idea\IntelliJ IDEA 2020.1.2\bin;;D:\webstrom_project\WebStorm 2019.3.3\bin;;.]
31-Aug-2020 19:40:07.496 淇℃伅 [main] org.apache.coyote.AbstractProtocol.init 鍒濆鍖栧崗璁鐞嗗櫒 ["http-nio-8080"]
31-Aug-2020 19:40:07.626 淇℃伅 [main] org.apache.coyote.AbstractProtocol.init 鍒濆鍖栧崗璁鐞嗗櫒 ["ajp-nio-8009"]
31-Aug-2020 19:40:07.626 淇℃伅 [main] org.apache.catalina.startup.Catalina.load 鏈嶅姟鍣ㄥ湪[359]姣鍐呭垵濮嬪寲
31-Aug-2020 19:40:07.646 淇℃伅 [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
31-Aug-2020 19:40:07.646 淇℃伅 [main] org.apache.catalina.core.StandardEngine.startInternal 姝e湪鍚姩 Servlet 寮曟搸锛歔Apache Tomcat/9.0.30]
31-Aug-2020 19:40:07.656 淇℃伅 [main] org.apache.coyote.AbstractProtocol.start 寮�濮嬪崗璁鐞嗗彞鏌刐"http-nio-8080"]
31-Aug-2020 19:40:07.666 淇℃伅 [main] org.apache.coyote.AbstractProtocol.start 寮�濮嬪崗璁鐞嗗彞鏌刐"ajp-nio-8009"]
31-Aug-2020 19:40:07.666 淇℃伅 [main] org.apache.catalina.startup.Catalina.start Server startup in [38] milliseconds
Connected to server
[2020-08-31 07:40:07,976] Artifact firstWeb:war exploded: Artifact is being deployed, please wait...
31-Aug-2020 19:40:08.276 璀﹀憡 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [110] milliseconds.
[2020-08-31 07:40:08,296] Artifact firstWeb:war exploded: Artifact is deployed successfully
[2020-08-31 07:40:08,296] Artifact firstWeb:war exploded: Deploy took 320 milliseconds
31-Aug-2020 19:40:17.666 淇℃伅 [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory 鎶妛eb 搴旂敤绋嬪簭閮ㄧ讲鍒扮洰褰� [D:\Apache\tomcat\apache-tomcat-9.0.30\webapps\manager]
31-Aug-2020 19:40:17.705 淇℃伅 [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [D:\Apache\tomcat\apache-tomcat-9.0.30\webapps\manager] has finished in [39] ms
以上就是tomcat出现的中文乱码。
我的IDEA版本是2020.1.2版
tomcat是9.0的
下面是我的解决方案。
第一步:找到help如图
第二步:找到Edit Custom VM Options...
,如图
第三步:在文件中加入-Dfile.encoding=UTF-8
后保存
还没有结束!!!
第四步:清除缓存后重启IDEA(这步很关键,不清除缓存还是乱码)
重启后效果图:
注意:路径一定是英文路径!!!!
完美解决~
输出语句控制台中文乱码问题
下面还有一个问题:
我见一个类:
package com.service;
import javax.servlet.*;
import java.io.IOException;
public class MyServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//输出中文字符
System.out.println("试试");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
下面是我的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.service.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
</web-app>
然后我直接访问…
出现下面的情况:
出现这种情况只需要几步就完成。
第二步:加入-Dfile.encoding=UTF-8
第三步:重新发布一下项目或者是重写下tomcat就ok