有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如果通过jar文件执行程序,则java html umlauts无法正确呈现

我有以下Java代码来创建HTML文件。我使用j2html库来实现:

String html = html(
                     head(
                         meta().attr("charset", "UTF-8"),
                         title("test"),
                         link().withRel("stylesheet").withHref("style.css")
                     ),
                     body(
                            h1("Räte"),
                            h2("Äpfel")
                     )
                   ).render();
File file = new File("index.html");
FileUtils.writeStringToFile(file, html);

如果我通过IntelliJ启动程序,并且我得到以下输出,那么这将非常有效:

test

Räte

Äpfel

但是如果我创建一个JAR工件并启动它,UMLAUT就不会正确显示。看起来是这样的:

test

R�te

�pfel

这是相同的Java代码,字符集设置为UTF-8


共 (1) 个答案

  1. # 1 楼答案

    ^{}在将字符串写入文件时使用JVM's default encoding

    JVM的默认编码可能因您启动JVM的方式而异(这就是为什么您从IntelliJ和direct JAR执行中收到不同的结果)

    因此,^{}方法已被弃用,您应该始终使用^{}方法,在该方法中,您明确指定编码,而不是依赖JVM默认值:

    FileUtils.writeStringToFile(file, html, StandardCharsets.UTF_8);