idea控制台中文乱码(server日志显示 TomcatLocalhostLog日志 TomcatCatalina Log日志 数据库读取数据到控制台)

本文详细介绍了如何在IntelliJ IDEA中解决Tomcat项目控制台出现的乱码问题,通过修改IDEA设置、VMoptions配置及Tomcat的logging.properties文件,实现UTF-8编码的正确显示。

   1、idea工具左上角File->setting  ->Editor

 

 

 

2、Run ->Edit Configurations

3、在VM options编辑框添加 这段字符串 -Dfile.encoding=UTF-8

 

 

4、编辑idea安装路径下的  idea.exe.vmoptions和idea64.exe.vmoptions

 

两个配置文件都在最后一行下面添加 -Dfile.encoding=UTF-8

 

5、编辑E:\apache-tomcat-8.5.50\conf\logging.peoperties文件(我用的是tomcat8.5.50版本)

找到java.util.logging.ConsoleHandler.encoding = UTF-8    设置UTF-8

 

help->Edit  Custom VM     (注意)

在最后一行添加-Dfile.encoding=UTF-8

6、重新启动软件。

7、intellij IDEA控制台部署Tomcat项目不再乱码。

但是cmd 通过命令启动Tomcat  cmd黑框中信息依然乱码。不能两全。

<think>我们正在解决Tomcat的catalina.out日志件中中显示乱码的问题。 乱码通常是由于字符编码不一致造成的。Tomcat默认使用UTF-8编码,但catalina.out日志的编码可能受到系统环境、终端设置或Tomcat配置的影响。 分析可能的原因: 1. 系统环境变量(如LANG)的编码设置不正确。 2. Tomcat启动脚本(catalina.sh)中没有正确设置件编码。 3. 终端显示编码设置不正确。 解决方案: 步骤1:检查系统编码设置 在Linux系统中,可以通过以下命令查看当前编码: echo $LANG 如果输出不是UTF-8(如zh_CN.UTF-8),则需要设置。 步骤2:设置系统环境变量 编辑/etc/profile件,添加以下行: export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8" 然后执行:source /etc/profile 步骤3:修改Tomcat启动脚本(catalina.sh) 在catalina.sh中找到以下行(通常在件顶部): #!/bin/sh 在下面添加: export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8" 步骤4:重启Tomcat 重启Tomcat以使更改生效。 步骤5:检查终端编码 如果使用SSH客户端(如PuTTY),请确保客户端的字符编码设置为UTF-8。 如果以上步骤不能解决,还可以尝试修改日志输出的编码方式,例如在logging.properties中配置,但catalina.out是控制台输出,通常由启动脚本的环境决定。 另外,如果使用logrotate等工具切割日志,也要确保切割脚本不会改变件编码(例如使用truncate命令是安全的,因为它不会改变件编码)。 参考引用[2]中提到了一个日志切割脚本,其中使用了truncate命令,这个命令不会改变件的编码,所以不会导致乱码。但是,如果使用其他方式处理日志(如重定向),则需要注意编码问题。 如果问题仍然存在,可以考虑将catalina.out的输出重定向到一个件,并在重定向时指定编码: exec >> "$CATALINA_OUT" 2>&1 改为: exec >> "$CATALINA_OUT" 2>&1 -Dfile.encoding=UTF-8 但是,实际上Tomcat的启动脚本中已经支持通过JAVA_OPTS设置编码,所以更好的做法是在setenv.sh中设置: 创建setenv.sh(在Tomcat的bin目录下)并添加: export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8" 然后重启Tomcat。 总结:主要从系统环境、Tomcat启动环境和终端显示三个方面确保统一使用UTF-8编码。 如果按照上述步骤操作后,日志中仍然出现乱码,请检查应用程序输出的日志是否本身存在编码问题。 相关问题: 1. 如何检查Linux系统的当前字符编码设置? 2. Tomcat的setenv.sh件有什么作用? 3. 除了catalina.out,Tomcat的其他日志件出现乱码该如何解决?</think>### 解决Tomcat catalina.out日志乱码问题 中乱码通常由**字符编码不一致**引起。以下是完整解决方案,按优先级排序: #### 🔧 核心解决方案(修改Tomcat配置) 1. **修改JVM字符集参数** 在 `bin/catalina.sh`(Linux)或 `bin/catalina.bat`(Windows)中增加编码设置: ```bash # 在件开头添加 JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8" ``` Windows系统需将 `$JAVA_OPTS` 改为 `%JAVA_OPTS%` 2. **修改日志处理器编码** 编辑 `conf/logging.properties`,修改控制台处理器配置: ```properties java.util.logging.ConsoleHandler.encoding = UTF-8 ``` 3. **重启Tomcat生效** ```bash ./shutdown.sh && ./startup.sh # Linux shutdown.bat && startup.bat # Windows ``` #### ⚙️ 辅助解决方案(环境层面) 4. **检查系统环境变量** 确保系统语言设置为UTF-8: ```bash # Linux检查 echo $LANG # 应为 zh_CN.UTF-8 或 en_US.UTF-8 # 永久生效(/etc/profile添加) export LANG="en_US.UTF-8" export LC_ALL="en_US.UTF-8" ``` 5. **终端工具配置** - SSH工具(PuTTY/Xshell):设置字符编码为UTF-8 - 查看命令:`cat` 改用 `less` 或 `vim`(支持编码识别) #### 📂 日志切割注意事项 若使用日志切割工具(如cronolog/logrotate),需确保切割后件保持UTF-8编码: ```bash # 示例切割命令(保留编码) cp catalina.out catalina.out.$(date +%Y-%m-%d) && truncate -s 0 catalina.out ``` 避免使用重定向 `>` 清空件,可能破坏编码[^2][^3]。 #### ✅ 验证步骤 1. 创建测试Servlet输出中: ```java response.getWriter().println("中测试"); ``` 2. 检查日志: ```bash file -i catalina.out # 应显示 charset=utf-8 ``` > **关键点**:乱码本质是**数据流编码**(JVM输出)与**显示环境编码**(终端/件查看器)不一致。优先确保JVM使用UTF-8输出[^1]。 --- ### 📚 相关问题 1. 如何验证Tomcat的JVM当前使用的字符编码? 2. Linux系统环境下,如何永久修改全局语言编码设置? 3. 使用logrotate切割日志时,如何避免中乱码问题? 4. 除了catalina.out,Tomcat其他日志件出现乱码应如何排查? [^1]: 改动最小,最简洁的 tomcat catalina.out日志切割(按天) [^2]: Docker容器Tomcat无catalina.out日志件。将日志件进行归档整理 [^3]: tomcat catalina.out日志切割处理方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值