Java字符串在CMD与Spring Tools Suite中的编码差异问题
问题原因及解决方法
问题原因
- Windows 10德语版默认控制台代码页为CP850(西欧DOS编码),而非UTF-8。你虽然在Maven启动命令中指定了
-Dfile.encoding=UTF8,但控制台本身的输出编码仍为系统默认的非UTF-8编码,导致UTF-8编码的字符输出时被错误解析,出现"³"这类乱码。 - STS的Boot Dashboard启动时,IDE内置控制台已默认配置为UTF-8编码,因此字符能正常显示。
解决方法
方法1:临时切换控制台编码为UTF-8
在执行Maven命令前,先切换控制台代码页到UTF-8(代码页编号65001):
chcp 65001 && mvn clean package -Pproduction && mvn spring-boot:run -Dfile.encoding=UTF8
提示:切换编码后若字体显示异常,可将控制台字体改为
Consolas或Lucida Console。
方法2:全局配置Maven默认编码
修改Maven的settings.xml文件(路径为Maven安装目录conf/settings.xml或用户目录.m2/settings.xml),添加以下配置强制所有项目使用UTF-8编码:
<profiles> <profile> <id>default-encoding</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> </properties> </profile> </profiles>
方法3:增强JVM启动参数
在启动命令中额外添加控制台编码参数,确保JVM输出到控制台时使用UTF-8:
mvn clean package -Pproduction && mvn spring-boot:run -Dfile.encoding=UTF8 -Dconsole.encoding=UTF8
内容的提问来源于stack exchange,提问作者Stimpson Cat
相关产品推荐
相关产品推荐

