当前位置: 首页 > news >正文

Tomcat8和Tomcat9乱码问题

今天新开了一个小项目,我丢,乱码了,咋回事,好久没遇到过了,都忘了咋回事。今天必须记录下来,避免继续踩坑

Tomcat 8

不需要进行任何配置即可,它默认的是GBK,而win10 win7 默认的也是GBK,所以

项目放webapp下然后 启动startup.bat 所展现的启动窗口,也不会有乱码。至于idea中配置Tomcat8 ,控制台也不会有乱码,如果有,那就看下图是否设置为GBK

Tomcat 9

默认的是utf - 8,所以需要做下处理:

  1、修改 conf/logging.properties 下图红框内容,utf-8 改为 GBK

2、bin\catalina.out 增加以下内容

set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%  -Dfile.encoding=GBK"

网上都是教set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%  -Dfile.encoding=utf-8"

运行项目也没问题,但是在项目中输出System.out.print() 就乱码了,因为这时输出到idea控制台的编码是utf-8,而你的 Settings - >Editor -> Console 中配置的是GBK,所以乱码。如果你改

Settings - >Editor -> Console 的 GBK 为 utf-8 ,那么idea运行Tomcat时,所打印出来的Tomcat相关信息又是乱码了,因为你第一步设置为GBK了。所以第一步,你还得改为utf-8 。但这又会有一个问题,那就是你把项目放到 Tomcat 的webapp下运行,这时候所弹出来的运行窗口又是乱码了,因为该窗口默认的是gbk,哈哈,你还得把第一步改为gbk才行。

所以建议按此文章内的正常步骤设置即可

 3、确保idea配置如下图

那么,Tomcat 9经过上面配置后,效果跟Tomcat 8 一样了

其他说明

1、乱码跟idea这些配置没有关系的,当然,下图我们就应该这样配置,在项目未创建之前都该这样配置了

2、Tomcat 10 启动报错

参考网文:

原来是 Servlet、JSP 与 Spring 的版本之间的匹配出了问题。众所周知,2018 年,Java EE 改名为 Jakarta EE。这导致一些 JAR 包的包名也在之后的版本中进行了更改。这对本项目的影响是,Spring 本身是不含 Servlet、JSP 的 JAR 包的,但其依赖这些 JAR 包。如果在 Tomcat 服务器中部署的项目使用了 Spring,则这部分的 JAR 包将由 Tomcat 服务器来提供。而问题在于,Spring 5.2.9.RELEASE 期望的 JAR 包前缀是 javax,而Tomcat 10.0.0 提供的 JAR 包前缀是 jakarta。因此,Spring 报了一个认为没有 Servlet、JSP 的 JAR 包的错。

  (查看 Tomcat 的各版本对应的 Servlet 等的版本的网址是:http://tomcat.apache.org/whichversion.html)

  由于 Tomcat 与 Servlet、JSP 的 JAR 包关系密切,因此无法通过替换 Tomcat 下的文件夹 lib 中 Servlet、JSP 的 JAR 包来解决。而且这也无法通过在 Maven 中添加正确的 Servlet、JSP 依赖来解决,实际上,如果该工程的纯 Java 代码的部分没有使用到 Servlet、JSP 的 JAR 包,其实这里在 Maven 添加的 Servlet、JSP 依赖都可以删掉。(更专业的说法是,在基于 Maven 的 Web 应用中,对 Servlet、JSP 的依赖范围为 provided。)

  幸运的是,Tomcat 9.0.41 使用的 JAR 包前缀是 javax 。因此,这里只需要再安装一个Tomcat 9.0.41 即可解决(不需要卸载已有的 Tomcat,因为不同版本的 Tomcat 的安装路径可以不同,只是安装时需要先关闭已有的 Tomcat 服务器,避免占用同一个端口号)。

3、网上说在idea的Tomcat配置里加,其实不用加

4、这属于URI的乱码,跟上面乱码不是一回事,但也要设置下

 

http://www.lryc.cn/news/64168.html

相关文章:

  • Lesson13 IP协议
  • 【每日一题Day192】LC1033移动石子直到连续 | 分类讨论 贪心
  • 2023年软件测试常见面试题100%问必背全套教程
  • TypeScript 基本概念
  • libfacedetection 人脸检测库 检测速度慢的问题
  • 项目骨架搭建
  • “火灾不分昼夜,安全在我心中”——五一前厂房消防检查纪实
  • UNIX环境高级编程——进程关系
  • C# ref和out用法和区别
  • 信息复制的革命:印刷术【提高信噪比】
  • 【MySQL】事务
  • 学习HCIP的day.03
  • Maven项目的配置
  • Spring Boot使用(基础)
  • 6WINDGate-overview
  • Java8新特性-流式操作
  • Nautilus Chain Layer 3 圆桌会议圆满举办,超4.8K用户观看
  • 本地elasticsearch中文分词器 ik分词器安装及使用
  • Java 中的异常处理机制是什么?如何使用它来处理程序中的异常?(七)
  • 基于UDQ的并网单相逆变器控制【同步参考系下单相并网全桥正弦PWM逆变器闭环控制】(Simulink)
  • JAVA开发——常用的注解
  • 【Java笔试强训 24】
  • SpringCloud详解
  • 如何保障网络安全
  • 网络基础:socket套接字
  • 程序员如何学好PHP?做好这五个方面就够了
  • 【开源项目】Build your own X 构建自己的项目
  • 在.NET Core中正确使用HttpClient的方式
  • 【C++】位运算类题目总结
  • Node服务端开发【NPM】