[英]Java encoding issues after upgrading to Java 17 using the Microsoft OpenJDK
在我使用Microsoft OpenJDK升级到 Java 17 后,由于编码失败问题,所有使用非 ASCII 字符的测试都失败了。
例如,我的一项测试使用了以下 Unicode 个字符(例如,U+2660 到 U+2663):
entityManager.persist(
new Suit()
.setName("Club")
.setSymbol("♣")
);
entityManager.persist(
new Suit()
.setName("Diamond")
.setSymbol("♦")
);
entityManager.persist(
new Suit()
.setName("Heart")
.setSymbol("♥")
);
entityManager.persist(
new Suit()
.setName("Spade")
.setSymbol("♠")
);
如何解决?
在使用 Microsoft 构建的 OpenJDK 升级到 Java 17 版本时,我也遇到了问题,因为 Java 源文件现在使用默认的 Windows 编码进行编码,而不是 UTF-8。
要解决此问题,请将file.encoding
属性设置为UTF-8
。
最简单的方法是设置MAVEN_OPTS
环境变量:
MAVEN_OPTS=-Dfile.encoding=UTF-8
另一种选择是将其传递给 Maven Surefire 插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>
而且,如果你想启动一个 Java 程序,然后传递-Dfile.encoding=UTF8
属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.