为什么我看不到Java中的Unicode字符

为什么我看不到Java中的Unicode字符,java,unicode,Java,Unicode,我正在学习java,我发现java中的字符范围为0-65536,java使用Unicode来表示字符。因此,我运行以下代码以查看所有字符是什么: class A{ public static void main(String args[]){ char x=0; for(int i=0;i<65536;i++){ x++; System.out.println(i + "th character is:

我正在学习java,我发现java中的字符范围为0-65536,java使用Unicode来表示字符。因此,我运行以下代码以查看所有字符是什么:

class A{
    public static void main(String args[]){
        char x=0;
        for(int i=0;i<65536;i++){
            x++;
            System.out.println(i + "th character is: " + x);
        }
    }
}
我发现的是:-

前126个字符与ASCII字符相同

在第126个字符之后,它只是显示“?”标记

输出:-

。。。 第127个字符是:? 第128个字符是:? 第129个字符是:? 第130个字符是:? 第131个字符是:? 第132个字符是:? 第133个字符是:? ... 65534个字符是:


我的问题是为什么它显示“?”标记而不是Unicode字符

用下一行检查您的文件编码,看看会出现什么。如果不是“UTF-8”,则正确设置。你仍然看不到所有打印的字符。因此,您需要查看要相应地设置文件编码的文件

System.out.println(System.getProperty("file.encoding"));
System.setProperty("file.encoding","UTF-8");

我说它们就是无法显示。您的主机编码不正确set@AbhinavKumar:您需要在控制台中配置能够显示这些字符的字体,并且可能还需要使用chcp 65001将命令行编码更改为UTF8一些Unicode需要两个UTF-16代码单元字符。因此,要运行所有这些代码,包括未分配、私用等,请转到Character.MIN_CODE_POINT to Character.MAX_CODE_POINT,但@TomBlodget除外:这也意味着需要UTF-16代理U+10000到U+10FFFF的Unicode代码点必须使用字符串或char[]而不是单个char输出。使用Character.toCharsint将Unicode代码点转换为有效的UTF-16 char[]序列,然后可以根据需要将char[]转换为字符串。