为什么windows在java中的system.out.print上显示问号?

为什么windows在java中的system.out.print上显示问号?,java,encoding,command-line,cmd,println,Java,Encoding,Command Line,Cmd,Println,我在ubuntu机器上用java编写了一个程序 一切都很好,直到我尝试在我的windows机器上运行该程序。。。 大失误=D 所有系统输出打印(“字符串”)未正确显示的位置。然后我尝试让windows只打印System.out.print(“”) windows cmd输出? 完整代码为: import java.io.*; class Test { public static void main (String[] args) { System.out.print(""

我在ubuntu机器上用java编写了一个程序

一切都很好,直到我尝试在我的windows机器上运行该程序。。。 大失误=D

所有
系统输出打印(“字符串”)未正确显示的位置。然后我尝试让windows只打印
System.out.print(“”)

windows cmd输出

完整代码为:

import java.io.*;
class Test {
    public static void main (String[] args) {
        System.out.print("");
    }
}
这到底是什么???
我真的没有输入任何?或其他要打印的字符…

我自己发现了错误

我仍然很好奇,但线索是:

该文件是用UTF-8编写的。 将代码转换为ANSI后,出现了一些神秘的符号

System.out.print(“ï»o”)

好吧。。。不知道这是什么,也不知道这有什么意义


但是我的代码正在运行=)

事实上,我能给你的问题的唯一答案是
。所以我不怪你的Windows系统。:)说真的,我们需要更多的代码,而不仅仅是一个打印语句。请参阅有关创建最小示例的提示。实际上没有比这更多的代码。。。只有主类和方法=d
是字符的替换字符,该字符不能在给定的字符集中显示。但是我不知道为什么会印在你的箱子里。您是否重新编译了源代码或使用了类文件?你能检查源代码中有没有隐藏的破折号十六进制字符(或者只写一个新的,没有剪切+粘贴)。这是一个零宽度的非破折号空间。编码没有问题-事实上,将文件视为ANSI(当它不是ANSI时)会将零宽度的不间断空格转换为垃圾字符,从而弄乱代码(尽管在这种情况下这可能是一件好事,因为它可以解决您的问题).我会说,如果你在看一个计算机程序,它看起来像是说
System.out.println(“”)
,当引号中实际上有字符时,那么您使用了错误的工具来查看/编辑程序。换句话说,字节序列
0xEF
0xBB
0xBF
构成
UTF-8