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

相关推荐
程序猿熊跃晖6 小时前
解决 MyBatis-Plus 中 `update.setProcInsId(null)` 不生效的问题
数据库·tomcat·mybatis
A旧城以西7 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
XiaoLeisj10 小时前
【MyBatis】深入解析 MyBatis XML 开发:增删改查操作和方法命名规范、@Param 重命名参数、XML 返回自增主键方法
xml·java·数据库·spring boot·sql·intellij-idea·mybatis
WannaRunning11 小时前
浅谈Tomcat数据源连接池
java·oracle·tomcat
色空大师11 小时前
【idea】实用插件
java·ide·intellij-idea
StandByMe.(备考期末版,暂不)1 天前
IDEA 2024.3.5 中修改 web.xml 的 Servlet 版本(比如从 4.0 修改为 5.0)
intellij-idea
悠夏安末1 天前
intellij Idea 和 dataGrip下载和安装教程
java·ide·intellij-idea
兢兢业业的小白鼠1 天前
Java高级JVM知识点记录,内存结构,垃圾回收,类文件结构,类加载器
java·开发语言·jvm·tomcat
柚几哥哥1 天前
IntelliJ IDEA全栈Git指南:从零构建到高效协作开发
java·git·intellij-idea
chushiyunen1 天前
tomcat使用笔记、启动失败但是未打印日志
java·笔记·tomcat