关于tomcat在idea上的中文编码问题
一、问题引入
在国内,无论是新手还是有一定码龄的开发人员,汉字编码问题一直都是绕不开的魔咒,本文主要对tomcat在jetbrain系列产品idea上的乱码问题提供解决经验。
二、详情描述
新手在初学Java Web时,兴致冲冲的安装了tomcat 10.x.x 或其他版本→idea新建web项目→试运行:

大段的红色乱码信息,冲击着初学者的心灵。
虽然不会实际开发造成影响,但看着这些云里雾里的信息时还是挺~影响心情的。
淇℃伅 --> 信息
鍛戒护琛屽弬鏁帮細 --> 命令行参数:
三、问题分析
在以前的 javase 学习中,中文乱码问题是通过统一编码的方式解决的(GBK和UTF-8)。
但如下图所示,很明显这次绝对不像之前那样能轻松解决。我们可以看到在idea的console下的输出出现了两种(可能不止两种)不同的流,且两种不同的流使用了两种不同的编码格式。(即白色的你好!Hello!!!可以正常显示,而红色的信息却是乱码)

这里解释一下:「你好!Hello!!!」这部分信息是我在代码里写的System.out.println("你好!Hello!!!");其他是Tomcat的输出的日志信息。
综上,问题的解决方案应该从Tomcat下手。
四、解决方案
方法一
作者在遇到这个坑的时候一开始是从问题的根本下手的,既然会出现中文乱码问题那么直接让Tomcat输出英语不就解决了吗!
于是就从网络上找到了解决方法;
Tomcat启动时会检查本地语言环境,来调用对应的i18n文本,中文环境默认会显示中文日志,但在终端中容易出现乱码,虽然乱码问题可以通过修改字符集处理,还是想尝试一下改成英文输出。刚研究了一下,发现可以通过修改参数来设置输出日志的语言,将运行参数中的语言环境设置为英文即可,在此记录一下修改步骤
此文档所使用的环境如下
Server version name: Apache Tomcat/9.0.62
OS Name: Windows 10
JVM Version: 1.8.0_301-b09修改catalina
修改
bin/catalina.bat文件,其中有一项关于CATALINA_LOGGING_CONFIG的配置,大约是230行,不同版本所在行不一样,大致在那个区间if not "%CATALINA_LOGGING_CONFIG%" == "" goto noJuliConfig
set CATALINA_LOGGING_CONFIG=-Dnop
if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig
set CATALINA_LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"
:noJuliConfig
将其中的set语句后面添加language配置
-Duser.language=en -Duser.region=US,如下set CATALINA_LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" -Duser.language=en -Duser.region=US
注意空格。
提示:如果是在Linux系统,则修改
bin/catalina.sh文件修改时间格式
顺便改一下显示日志中的时间格式,修改
conf/logging.properties,在ConsoleHandler区添加timeFormat配置java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8 org.apache.juli.OneLineFormatter.timeFormat = yyyy-MM-dd HH:mm:ss
重启Tomcat检查修改是否生效。
作者:zhouf_cq
链接:https://www.jianshu.com/p/da8386129a50
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
不得不说,直接改成英文一定是乱码问题的通解。(直接绕开问题
但是作者一直都有一个坏毛病(X,就是喜欢把所有工具更到最新。
于是就在我的第一次更新Tomcat的时候,它又变成了中文。
Tomcat更新时,会把之前辛苦配置的文件覆盖掉,每次都要改一遍。对于我这种懒人来说,一行命令更新后,我可不想重新再修改一遍(这个不是配置文件,更新后可能会有变动不适合直接copy)。
于是,我就在idea上花费了一番功夫。
方法二
我把idea上的配置全部统一成了utf-8。
文件编码


上面是之前学javase的解决的方法。这次只要在上面的设置基础上添加一个设置。
setting→Editor→General→Console下,修改成UTF-8

Default Encoding 修改成UTF-8

OK
重启Tomcat

可以看到Tomcat日志输出正常了
五、后续问题
之前的问题这里并没有完全解决,可以看到System.out.println("你好!Hello!!!");输出的中文变成了乱码。

我们只要在idea里面配置一下项目配置就可以了。

在此处(红色的框)添加一句VM option 参数就可以了。
-Dfile.encoding=UTF-8

完美解决!
-Dfile.encoding=UTF-8这条参数很常见。
写在最后

关于tomcat在idea上的中文编码问题的更多相关文章
- 17.[CVE-2017-12615]Tomcat任意文件上传漏洞
[CVE-2017-12615] Tomcat任意文件上传漏洞 首先先贴出wooyun上的一个案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0 ...
- SampleDateFormat 高并发下导致 线程 Blocked 从而导致 Tomcat 吞吐一直上不去
SampleDateFormat 高并发下导致 线程 Blocked 从而导致 Tomcat 吞吐一直上不去
- java环境--JDK和Tomcat在linux上的安装和配置
Tomcat在Linux上的安装与配置 以下使用的Linux版本为: Redhat Enterprise Linux 7.0 x86_64,Tomcat版本为tomcat-7.0.54.1.下载JDK ...
- 【tomcat】不同域名解析到同一tomcat不同项目上
问题: 1. 有多个域名,想输入的每个域名只能访问其中的一个项目 2. 这些项目都部署在同一个tomcat上的 解决步骤: 1.首先把所有域名都解析到这台服务器上,解析时只能填写ip地址,不 ...
- 改变Tomcat在地址栏上显示的小猫图标
部署在Tomcat上的项目通常在地址栏会显示一个小猫的图标,那么如何改变这个图标呢? 第一步.制作自己显示的图标 这里使用的是在线制作的方式,推荐一个在线制作的网站---比特虫:http://www. ...
- Tomcat 在 Linux 上的安装和配置
一.文件上传 先上传tomcat安装文件到Linux服务器 二.解压安装 使用以下命令解压安装包 .tar.gz 解压成功会生成一个文件夹 tomcat服务器运行时是需要JDK支持的,所以必须先安装好 ...
- Tomcat任意文件上传漏洞CVE-2017-12615
文章来源:https://blog.csdn.net/qq1124794084/article/details/78044756 漏洞影响的tomcat版本为tomcat7.0.0-7.0.81版本 ...
- Tomcat CVE-2017-12615 远程上传漏洞复现
漏洞名称:CVE-2017-12615-远程代码执行漏洞 CVE-2017-12615:远程代码执行漏洞 当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 r ...
- 关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)
一.数据库存储 直接把图片的二进制码存到数据库,可参考blog:http://blog.csdn.net/hope2jiang/article/details/590733 直接存图片在mysql上面 ...
- 【转】关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)
一.数据库存储 直接把图片的二进制码存到数据库,可参考blog:http://blog.csdn.net/hope2jiang/article/details/590733 直接存图片在mysql上面 ...
随机推荐
- 火山引擎数智平台:高性能ChatBI的技术解读和落地实践
导读:大模型能力的发展和成熟,催生出新一代智能化 BI-- ChatBI,即通过自然语言处理(NLP)与大型语言模型(LLMs)的结合,极大简化数据分析过程,提高效率并降低分析门槛.火山引擎数智平台旗 ...
- Git 客户端基本使用及新手常见问题
Git作为一个版本管理工具,在企业中的应用越来越普遍.作为一个测试工程师,不可避免会需要接触到Git的相关操作,以下整理Git客户端的常见操作,以及应用中新手常碰到的一些问题. 1.环境安装及配置 G ...
- 技术储备--SPI接口硬件协议栈芯片W5500使用
整体思路: 移植官方软件包代码, 配置好底层的SPI收发函数以及片选脚操作, 至于临界区操作函数,根据实际情况进行添加,也可以不加. 这就移植好了,就可以在我们自己的板子上跑官方的示例程序了. 官方软 ...
- OxyPlot公共属性一览
一.PlotModel 1.构造函数中设置的属性 public PlotModel() { this.Axes = new ElementCollection(this); //坐标轴集合; this ...
- 线段树can you answer these queries-------hdu4027
问题描述: 给定一个数列,要求对指定区间内所有数开方,输出查询区间和 输入: 有很多个测试用例,每个用例第一行输出一个整数N,表示数列有N个数,1<=N<=100000;第二行输入N个整数 ...
- 深入理解虚拟 物理地址转换,页表--基于ARMV8
1. 页表转换寄存器描述符 1.1,页表/页目录结构 基于前言中的内核配置,内核采用39位虚拟地址,因此可寻址范围为2^39 = 512G,采用(linux 默认为五级页表,另外还有PUD,P4D,由 ...
- aarch64 和 ARMV8 的区别
aarch64 和 ARMv8 是紧密相关但涵义不同的术语,在解释他们的区别之前,让我们先简单理解它们各自的含义: ARMv8: ARMv8 是指 ARM 架构的第八个版本,这是由 ARM Holdi ...
- Android复习(四)-->权限汇总
官方地址: https://developer.android.google.cn/reference/android/Manifest.permission#public-constructors ...
- 王树森Attention与Self-Attention学习笔记
目录 Seq2Seq + Attention Attention的原理 方法一(Used in the original paper) 方法二(more popular,the same to Tra ...
- Nginx UI:全新的 Nginx 在线管理平台
前言 Nginx在程序部署中扮演着至关重要的角色,其高性能.高安全性.易于配置和管理的特点,使得它成为现代Web应用部署中不可或缺的一部分.今天大姚给大家分享一款实用的 Nginx Web UI 工具 ...