• 升级到tomcat10和Java 21后,idea控制台system.out.println输出中文乱码问题


    最近一次性从tomcat 9升级到tomcat 10,同时Java sdk也从1.8升级到21。

    升级过程中,当然会遇到很多问题,但是控制台输出中文乱码问题,着实折腾了很久。

    1、尝试各种方法

    网上说的很多通用方法都试过了,就是不生效。包括如下:

    1. IDEA调试运行配置,Tomcat运行的VM options加参数:-Dfile.encoding=utf-8
    2. IDEA配置项,File Encodings选项卡,全部设置为UTF-8。
    3. IDEA配置项,Console选项卡,Default Encoding设置为UTF-8。
    4. IDEA的Help菜单→Edit Custom VM Options...,末尾增加:-Dfile.encoding=utf-8。
    5. IDEA的bin目录下,打开idea64.exe.vmoptions文件,末尾增加:-Dfile.encoding=utf-8。
    6. Tomcat的conf目录下,logging.properties文件中,所有编码调整为UTF-8。
    7. 甚至是切换SDK。从Oracle SDK切换为open SDK,也不行。

    基本上网上说的方法,也就这些方法,全部都试过了,就是不行。

    2、排查问题原因

    仔细查看控制台输出,发现并不是所有地方都是乱码。如下图所示。

    有乱码的地方,都是使用:System.out.println 输出到内容。tomcat自身的输出,都是正常中文。

    如果IDEA不经过tomcat,直接使用System.out.println输出,那么会不会是乱码呢?

    写一个测试,执行输出,正常。那说明就是tomcat的问题,不是IDEA的问题。

    3、解决方法:

    1)修改tomcat中conf文件夹下的logging.properties文件。将编码从utf-8改成gbk。

    2)修改idea中控制台输出配置为GBK。

    3)重启项目,终于看到输出中文了。

    注意:这2个地方,必须改成一致,都设置为GBK。如果不一致,仍然会是乱码。都是UTF-8,也会是乱码。

  • 相关阅读:
    【Leetcode】【中等】1726.同积元组
    034:vue项目利用qrcodejs2生成二维码示例
    TypeScript小状况之选且只选一个
    在群晖上安装Nextcloud-AIO详解
    教你轻松开发一个Andriod版即时通讯
    Linux 下的 input 子系统开发框架
    设计模式六大原则
    RabbitMQ的基本介绍
    【golang】分布式缓存 - 一致性哈希算法
    计算机网络(二):TCP篇
  • 原文地址:https://blog.csdn.net/weixin_42127613/article/details/139746374