繁体   English   中英

使用 Microsoft OpenJDK 升级到 Java 17 后出现 Java 编码问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM