Tomcat控制台乱码

本文详细介绍了如何在Tomcat配置中解决控制台出现的乱码问题,通过修改logging.properties文件中第51行编码为GBK,确保了正确显示中文字符。

Tomcat控制台乱码的问题:

 

 

 

打开Tomcat安装的文件位置,找到conf子文件夹下的logging.properties文件

 

第51行的最后,改成GBK

成功

Tomcat 控制台乱码通常是由于字符编码不一致导致的,尤其是在 Windows 系统中较为常见。Tomcat 默认使用操作系统的默认编码来输出日志和控制台信息,而 Windows 系统(如中文版)默认使用的是 **GBK** 编码,而 Tomcat 或应用程序期望使用 **UTF-8** 编码,这就导致了中文乱码。 ### 解决方法 #### 方法一:修改 `logging.properties` 文件(推荐) 1. 找到 Tomcat 安装目录下的 `conf/logging.properties` 文件。 2. 搜索如下内容: ``` java.util.logging.ConsoleHandler.encoding = UTF-8 ``` 3. 将其修改为: ```properties java.util.logging.ConsoleHandler.encoding = GBK ``` 或者如果你希望强制使用 UTF-8,并确保你的终端支持 UTF-8(例如在 IntelliJ IDEA 或 Eclipse 中设置控制台编码为 UTF-8),则保持为: ```properties java.util.logging.ConsoleHandler.encoding = UTF-8 ``` > 注意:Windows 命令行(cmd)默认编码是 GBK(代码页 936),所以设为 GBK 能正常显示中文;若在 IDE 中运行,建议统一设为 UTF-8 并设置 IDE 控制台编码为 UTF-8。 #### 方法二:启动时指定 JVM 参数 在启动 Tomcat 时添加 JVM 参数,强制设置控制台输出编码: ```bash -Dfile.encoding=UTF-8 ``` 或 ```bash -Dfile.encoding=GBK ``` 具体添加方式: - 如果你是通过 `catalina.sh` 或 `catalina.bat` 启动,可以在文件开头添加: ```bat set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8 ``` (Windows 的 `catalina.bat`) 或 Linux 的 `catalina.sh`: ```sh export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8" ``` #### 方法三:IDE 中设置(如 IntelliJ IDEA / Eclipse) 如果你是在 IDE 中运行 Tomcat: 1. 打开运行配置(Run Configuration)。 2. 在 "VM options" 中加入: ```java -Dfile.encoding=UTF-8 ``` 3. 设置控制台编码: - IDEA: File → Settings → Editor → File Encodings → 设置 Console Encoding 为 UTF-8 或 GBK。 - Eclipse: Window → Preferences → General → Workspace → Text file encoding → 设置为 UTF-8。 --- ### 根本原因解释 Java 程序的字符编码受以下因素影响: - `-Dfile.encoding` JVM 参数决定 `Charset.defaultCharset()` 的返回值。 - Tomcat 的日志处理器(`ConsoleHandler`)使用系统默认编码或显式配置的编码。 - 操作系统终端(如 cmd)有自己的代码页(Windows 下 `chcp` 查看,默认中文是 936,即 GBK)。 - 当 JVM 使用 UTF-8 输出,但终端用 GBK 显示时,就会出现乱码。 因此,解决乱码的关键是:**确保 JVM、Tomcat 日志配置、操作系统终端三者的编码一致**。 --- ### 示例代码:查看当前编码(可用于验证) ```java public class EncodingCheck { public static void main(String[] args) { System.out.println("Default Charset: " + java.nio.charset.Charset.defaultCharset()); System.out.println("file.encoding: " + System.getProperty("file.encoding")); System.out.println("sun.jnu.encoding: " + System.getProperty("sun.jnu.encoding")); } } ``` 运行该程序可以确认当前 JVM 使用的编码。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值