【问题标题】:Why I can't see the Unicode characters in Java为什么我在 Java 中看不到 Unicode 字符
【发布时间】:2017-06-26 04:54:52
【问题描述】:

我正在学习 java,我发现在 java 中 char 的范围是 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);
        }
    }
}

我发现的是:-

  1. 前 126 个字符与 ASCII 字符相同。

  2. 在第 126 个字符之后只显示“?”标记。

输出:-

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

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

【问题讨论】:

  • id 说他们只是无法显示
  • 您的控制台编码设置不正确
  • @AbhinavKumar:您需要在控制台中配置一种能够显示这些字符的字体(您可能还需要使用chcp 65001将命令行编码更改为UTF8)
  • 某些 Unicode characters 需要两个 UTF-16 代码单元 (char)。因此,要遍历所有这些(包括未分配、私人使用等),请转到 Character.MIN_CODE_POINTCharacter.MAX_CODE_POINT 除非 &lt;Character.MAX_SURROGATE &amp;&amp; Character.isSurrogate((char)i)
  • @TomBlodget:这也意味着需要 UTF-16 代理项(U+10000 到 U+10FFFF)的 Unicode 代码点必须使用 Stringchar[] 而不是单个 @987654330 输出@。使用 Character.toChars(int) 将 Unicode 代码点转换为有效的 UTF-16 char[] 序列,然后您可以根据需要将 char[] 转换为 String

标签: java unicode


【解决方案1】:

使用以下行检查您的文件编码,看看会发生什么。如果不是“UTF-8”,则正确设置。你仍然不会看到打印的所有字符。所以你需要看看你想相应地设置哪个文件编码。

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

【讨论】:

    猜你喜欢
    • 2011-10-30
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    相关资源
    最近更新 更多