IDE 设置 UTF-8、操作系统 Windows 10、俄语。控制台输出代码:
System.out.println("тест")
在 IDEA 中没有“spring-boot-devtools”依赖的 Spring Boot 是可以的
在 Windows 控制台中使用“spring-boot-devtools”的 Spring Boot 是可以的
IDE 设置 UTF-8、操作系统 Windows 10、俄语。控制台输出代码:
System.out.println("тест")
在 IDEA 中没有“spring-boot-devtools”依赖的 Spring Boot 是可以的
在 Windows 控制台中使用“spring-boot-devtools”的 Spring Boot 是可以的
以下配置pom.xml
将解决该问题:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
<jvmArguments>-Dfile.encoding=UTF8</jvmArguments>
</configuration>
</plugin>
</plugins>
</build>
在 Windows 控制台编码是 cp1251 与您的语言环境配置,而 IntelliJ IDEA 控制台编码是 UTF-8。
从 IntelliJ IDEA 运行时,-Dfile.encoding=UTF8
在 IDE 启动 Maven 时将选项添加到命令行,以便 Maven JVM 输出编码与 IDE 控制台编码相同。
如果没有spring-boot-devtools
此选项,则正确传递并由在 IDE 控制台中运行您的代码的 JVM 进程兑现。它与运行 Maven 的 JVM 实例相同,一切正常。
使用spring-boot-devtools
依赖项 Maven JVM 分叉另一个 JVM 来运行您的代码,并且文件编码选项不再传递给它。文件编码默认为新 JVM 进程的系统区域设置并变为 cp1251,而 IntelliJ IDEA 控制台仍设置为使用 UTF-8 编码。如您的屏幕截图所示,输出已损坏。
spring-boot-maven-plugin
jvmArguments
应该使用配置将编码选项传递给分叉的 JVM。它还强制 Windows 控制台使用相同的编码,因此应用程序将继续在命令行中正常工作。