Java 默认编码

问题描述 投票:0回答:1

在源代码中使用德语

Umlaut ß
时,在 Windows 上是否仍然需要将 -encoding UTF-8 参数添加到 Java 编译器? 我以为UTF-8是Java的默认编码,不是吗?

class Main {
  public static void main(String[] args) {
    System.out.println("Viel Spaß beim üben!");
  }
}

打开Windows-CMD:

C:\temp>javac Main.java && java Main
Viel Spa� beim üben!

C:\temp>javac -encoding UTF-8 Main.java && java Main
Viel Spaß beim üben!

java windows encoding javac
1个回答
0
投票

根据评论...

  • 在 Java 18+ 中,大多数用途的默认字符编码是 UTF-8。有关详细信息,请参阅 JEP 400:默认 UTF-8
  • 在 Java 17 及更早版本中,对于大多数用途,默认字符编码特定于主机操作系统平台。

提示:通过传递可选参数来显式指定您想要的字符编码永远不会有什么坏处,而不是隐式依赖默认值。


代码的结果:

System.out.println("Viel Spaß beim üben!");

不是由Java控制。 Java 不会创建、拥有或控制您的特定控制台。您的控制台有自己的字符编码。您需要从 Java 输出文本以匹配该编码,或者必须将控制台使用的编码更改为 UTF-8(推荐)。


您的 Notepad++ 应用程序的屏幕截图无关紧要。文本编辑器正在传达其对 Java 源代码文件的字符编码的猜测。该编码与您的文本编码无关

"Viel Spaß beim üben!"
。它与你的控制台的字符编码无关。

顺便说一句,除非您在文件中嵌入了 BOM,否则文本编辑器只能猜测文件的字符编码,但不能确定地知道

© www.soinside.com 2019 - 2024. All rights reserved.