You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

终端运行Spring应用日志出现乱码问题求助

Spring Boot应用终端运行日志乱码,IntelliJ运行正常的解决方法

问题现象

本地运行Java Spring Boot应用时,通过IntelliJ的Run标签运行(Java 16)日志显示正常:

.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v2.3.12.RELEASE)

2023-01-10 18:08:15.863  INFO 82231 --- [           main] c.v.c.s.SaasControllerApplication        : Starting SaasControllerApplication on patelhiXMD6M.vmware.com with PID 82231 (/Users/user/workspace/saas-infra/saas-controller/target/classes started by user in /Users/user/workspace/saas-infra)
2023-01-10 18:08:15.876  INFO 82231 --- [           main] c.v.c.s.SaasControllerApplication        : No active profile set, falling back to default profiles: default
2023-01-10 18:08:16.536  INFO 82231 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2023-01-10 18:08:16.659  INFO 82231 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 119ms. Found 8 JPA repository interfaces.

但在终端运行时日志出现乱码:

.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v0.001-SNAPSHOT)

%.S.S.S.S.RepositoryConfigurationDelegatelr %.%.%.%.%.RepositoryConfigurationDelegatelr %.%.%.%.%.RepositoryConfigurationDelegatelr -.-.-.-.-.RepositoryConfigurationDelegatelr [.s5.d5.r5.c5.RepositoryConfigurationDelegatelr %.spri0.}.}.}.RepositoryConfigurationDelegatelr :.:.:.:.:.RepositoryConfigurationDelegatelr Bootstrapping Spring Data JPA repositories in DEFAULT mode.
[]wEx%.S.S.S.S.RepositoryConfigurationDelegatelr %.%.%.%.%.RepositoryConfigurationDelegatelr %.%.%.%.%.RepositoryConfigurationDelegatelr -.-.-.-.-.RepositoryConfigurationDelegatelr [.s5.d5.r5.c5.RepositoryConfigurationDelegatelr %.spri0.}.}.}.RepositoryConfigurationDelegatelr :.:.:.:.:.RepositoryConfigurationDelegatelr Finished Spring Data repository scanning in 145ms. Found 8 JPA repository interfaces.
[]wEx%.S.S.S.StandardServicelr %.%.%.%.StandardServicelr %.%.%.%.StandardServicelr -.-.-.-.StandardServicelr [.a5.c5.c5.StandardServicelr %.apac0.}.}.StandardServicelr :.:.:.:.StandardServicelr Starting service [Tomcat]
[]wEx%.S.S.S.StandardEnginelr %.%.%.%.StandardEnginelr %.%.%.%.StandardEnginelr -.-.-.-.StandardEnginelr [.a5.c5.c5.StandardEnginelr %.apac0.}.}.StandardEnginelr :.:.:.:.StandardEnginelr Starting Servlet engine: [Apache Tomcat/9.0.46]
[]wEx%.S.S.S.S.S.S.[/]lr %.%.%.%.%.%.%.[/]lr %.%.%.%.%.%.%.[/]lr -.-.-.-.-.-.-.[/]lr [.a5.c5.c5.C5.[5.[5.[/]lr %.apac0.}.}.}.}.}.[/]lr :.:.:.:.:.:.:.[/]lr Initializing Spring embedded WebApplicationContext
[]wEx%.S.S.HikariDataSourcelr %.%.%.HikariDataSourcelr %.%.%.HikariDataSourcelr -.-.-.HikariDataSourcelr [.z5.h5.HikariDataSourcelr %.zaxx0.}.HikariDataSourcelr :.:.:.HikariDataSourcelr HikariPool-1 - Starting...

两次运行使用相同的pom文件和配置文件。

可能原因及解决方法

1. 终端编码与应用输出编码不匹配

IntelliJ会自动适配应用输出编码为UTF-8,而终端可能使用了其他编码(如GBK),导致日志显示乱码。

  • macOS/Linux终端:
    输入命令查看当前编码:

    echo $LANG
    

    确保输出为zh_CN.UTF-8或en_US.UTF-8。如果不是,修改终端偏好设置中的编码为UTF-8,或者在终端配置文件(如~/.bashrc、~/.zshrc)中添加:

    export LANG=en_US.UTF-8
    export LC_ALL=en_US.UTF-8
    

    保存后执行source ~/.zshrc(对应你的shell类型)生效。

  • Windows终端:
    输入命令查看当前编码:

    chcp
    

    如果输出不是65001(UTF-8),执行以下命令切换:

    chcp 65001
    

    也可以通过终端属性设置默认编码为UTF-8。

2. Maven运行时未指定编码相关JVM参数

IntelliJ运行Spring Boot应用时,会自动添加-Dfile.encoding=UTF-8参数,而终端用Maven运行时可能缺少该参数,导致输出编码异常。

  • 临时解决:运行应用时手动指定参数:

    mvn spring-boot:run -Dfile.encoding=UTF-8
    
  • 永久解决:在pom.xml中配置spring-boot-maven-plugin,添加默认JVM参数:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    保存后,直接执行mvn spring-boot:run即可生效。

3. 日志框架编码配置问题

如果使用Logback作为日志框架,需要确保输出编码设置为UTF-8,避免终端显示乱码。

在logback.xml或logback-spring.xml中,给每个appender的encoder添加charset配置:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <charset>UTF-8</charset>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

内容的提问来源于stack exchange,提问作者Himanshu Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:11:06