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

相关推荐
18号房客41 分钟前
macOS开发环境配置与应用开发教程(一)
vscode·macos·visualstudio·eclipse·intellij-idea·phpstorm·visual studio
皮蛋很白1 小时前
Maven 环境变量 MAVEN_HOME 和 M2_HOME 区别以及 IDEA 修改 Maven repository 路径全局
java·maven·intellij-idea
w_312345413 小时前
自定义一个maven骨架 | 最佳实践
java·maven·intellij-idea
codeMaster__hyd16 小时前
CentOS7系统下部署tomcat,浏览器访问localhost:8080/
服务器·阿里云·tomcat
dr李四维16 小时前
IntelliJ IDEA 快捷键大全:提升开发效率的利器
java·intellij-idea·键盘·快捷键·快速开发
会说法语的猪20 小时前
IDEA使用Alt + Enter快捷键自动接受返回值一直有final修饰的问题处理
java·ide·intellij-idea
music0ant20 小时前
Idea 将多个module显示在同一个project
intellij-idea
Monly211 天前
Java(若依):修改Tomcat的版本
java·开发语言·tomcat
Ttang231 天前
Tomcat原理(6)——tomcat完整实现
java·tomcat
GoodStudyAndDayDayUp1 天前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea