如果通过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 楼答案
^{} 在将字符串写入文件时使用JVM's default encoding
JVM的默认编码可能因您启动JVM的方式而异(这就是为什么您从IntelliJ和direct JAR执行中收到不同的结果)
因此,^{} 方法已被弃用,您应该始终使用^{} 方法,在该方法中,您明确指定编码,而不是依赖JVM默认值: