gpt4 book ai didi

java - 如果在命令行编译与在 IntelliJ 中编译,java 程序的 UTF-8 输出会有所不同

转载 作者:行者123 更新时间:2023-11-29 09:18:40 24 4
gpt4 key购买 nike

以下程序的输出会有所不同,具体取决于我是使用 IntelliJ 编译它,还是从命令行手动编译它。据我所知,我的机器上只有一个编译器和 JVM。

public class OutputTest {

public static void main(String[] args) throws Throwable {
System.out.println(" Java Version: " +
System.getProperty("java.version") +
" from " + System.getProperty("java.vendor"));
String message = "Dźien Dobry. Jak się masz?";
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Charset charset = Charset.forName("UTF-8");
PrintWriter pw = new PrintWriter(new java.io.BufferedWriter(
new java.io.OutputStreamWriter(stream, charset)), true);
pw.write(message);
pw.close();
System.out.println(stream.toString());
System.out.println(java.util.Arrays.toString(stream.toByteArray()));
}
}

在 IntelliJ 中编译时的输出:

Java Version: 1.6.0_26 from Apple Inc.
Dźien Dobry. Jak się masz?
[68, -59, -70, 105, 101, 110, 32, 68, 111, 98, 114, 121, 46, 32, 74, 97, 107, 32, 115, 105, -60, -103, 32, 109, 97, 115, 122, 63]

从命令行编译时的输出:

Java Version: 1.6.0_26 from Apple Inc.
D≈∫ien Dobry. Jak siƒô masz?
[68, -30, -119, -120, -30, -120, -85, 105, 101, 110, 32, 68, 111, 98, 114, 121, 46, 32, 74, 97, 107, 32, 115, 105, -58, -110, -61, -76, 32, 109, 97, 115, 122, 63]

明确一点:输出取决于代码的编译位置。如果我让 IntelliJ 编译代码,但从命令行运行它,我也会看到第一个答案。

我运行的是 MacOS 10.6.8。

此外,它的值(value)在于:当我在 Linux 中从命令行编译它时,我得到的答案与 IntelliJ 编译版本给出的答案相同。

最佳答案

检查平台编码;您可能需要在命令行上指定 -encoding 参数以匹配 IntelliJ 正在执行的操作。没有它,它将使用默认的平台编码,这可能与 IntelliJ 的行为方式匹配,也可能不匹配。

关于java - 如果在命令行编译与在 IntelliJ 中编译,java 程序的 UTF-8 输出会有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7906050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com