IDEA2024最新版本运行Web应用时 Tomcat 日志中的中文乱码问题修复解决

一、IDEA2024运行Tomcat日志中的中文乱码问题修复

在使用tomcat的时候经常遇到乱码问题,要么是控制台输出乱码或者输出日志乱码,要么页面接收乱码,产生乱码的根本原因就是编码和解码不一致。网上有的文章写得也有问题,今天自己多看了一些文章,同时自己试了试摸索了一下,找到了终极解决方法。

IDEA2024运行 Tomcat 中文乱码问题的修复解决办法包括以下几个步骤和涉及的几个配置文件。注明一下,我这里的 Tomcat 版本是 10.1.31 版本。

1. IDEA本身的配置

修改IDEA->设置->编辑器->控制台 ,将默认编码设置为UTF8,网上有些文章让人修改成GBK,现在不到万不得已谁还用GBK啊,我们的程序文件代码不都清一色UTF8吗,所以这里肯定UTF8。

2. 修改 Tomcat下 \bin\catalina.bat 文件

网上有文章提出这里在104行 setlocal 之后增加下面这行内容。

set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8

但添加之后运行WEB项目出现报错:Unrecognized VM option 'MaxPermSize=1024m'。因为JAVA版本的问题,JVM无法识别VM选项'MaxPermSize=1024m'。因为从Java 8开始,永久代(PermGenspace)已不存在,取而代之的是元空间(Metaspace)。所以,这个选项已经不再被JVM支持。

也搜了网上的解决方法:如果你正在使用的是Java 8或更高版本,建议移除或者替换掉这个不再被支持的选项。如果你需要为元空间(Metaspace)设置一个初始化大小,你可以使用-XX:MetaspaceSize选项来指定。但修改成下面的配置依然会报错:Unrecognized VM option 'MaxPermSize=1024m'

set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=1024m -Dfile.encoding=UTF-8

我试了一下,我们只是需要修改编码,其它的东西看着也不相关,所以就把上面的这行内容直接修改简化为 set -Dfile.encoding=UTF-8 见如下截图:

上面的1和2两个小项修改好了之后,IDEA的控制台-服务器上的日志中文正常。试了试修改其中一个为GBK都会导致服务器控制台上的中文日志乱码。

3. tomcat的/conf/server.xml 配置文件。

在 Connector 配置项中 增加编码方式,位置在配置文件的约70行附近,如下增加一行 URIEncoding="UTF-8" 配置。

bash 复制代码
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               URIEncoding="UTF-8"
               />

4、tomcat的日志配置 \conf\logging.properties

tomcat 的日志配置文件 \conf\logging.properties 日志编码格式也需要修改一下,这里涉及到的两项修改分别对应 Tomcat 在 IDEA 界面上的 Tomcat Catalina 日志和 Tomcat Localhost 日志,大约在文件的第30行上下,如下位置 ,通过修改测试对比,需要将这两项值修改为GBK,可能是 Tomcat 内部的日志输出编码所致。修改为 GBK 后IDEA 界面上的 Tomcat Catalina 日志和 Tomcat Localhost 日志 中文乱码问题得到解决。

1catalina.org.apache.juli.AsyncFileHandler.level = ALL

1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs

1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.

1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90

1catalina.org.apache.juli.AsyncFileHandler.encoding = GBK

2localhost.org.apache.juli.AsyncFileHandler.level = ALL

2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs

2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.

2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90

2localhost.org.apache.juli.AsyncFileHandler.encoding = GBK

相关推荐
摇滚侠8 天前
IDEA 创建 Java 项目 手动整合 SSM 框架
java·ide·intellij-idea
摇滚侠8 天前
SpringMVC 入门到实战 RESTFul 49-55
java·开发语言·后端·spring·intellij-idea·restful
代码雕刻家8 天前
1.24.MySQL-idea中连接MySQL的基本操作
数据库·mysql·intellij-idea
星月IWJ8 天前
idea 工具整理
java·spring boot·intellij-idea
终将老去的穷苦程序员8 天前
IntelliJ IDEA 的安装教程
java·ide·intellij-idea
vx-Biye_Design8 天前
springboot安阳地区研学旅游服务小程序-计算机毕业设计源码12785
java·vue.js·windows·spring boot·tomcat·maven·mybatis
承渊政道8 天前
飞算JavaAI 智能引导背后的多 Agent 协作机制解析:从老旧 Java 后台升级到可运行工程
java·开发语言·spring boot·安全·intellij-idea·软件工程·ai编程
kakawzw9 天前
Tomcat源码笔记1——连接器(Tomcat4默认)
tomcat
lazy H9 天前
Spring Boot 项目如何连接 Redis?新手入门配置和常见错误总结
ide·spring boot·redis·后端·学习·intellij-idea
二哈赛车手9 天前
新人笔记---idea索引失效问题解决方案
java·笔记·spring·elasticsearch·intellij-idea