有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

eclipse如何在java中获取字符的Unicode

我使用eclipse作为IDE,当我试图打印阿拉伯语字符时,我得到了???????,所以我想打印Unicode如果是阿拉伯语字符

String displayChar(char c) {
    if (c < '\u0010') {
        return "0x0" + Integer.toHexString(c);
    } else if (c < '\u0020' || c >= '\u007f') {
        return "0x" + Integer.toHexString(c);
    } else {
        return c+"";
    }
}

例如:

displayChar('م'); // output is ?

共 (3) 个答案

  1. # 1 楼答案

    确保Java应用程序以及版本系统的文件编码支持Unicode。例如,尝试将文件保存为UTF-8。否则,您在编辑器窗格中看到的编码可能会丢失。为了获得最大的兼容性,应该使用源代码中的\u0645代码点对角色进行编码

    显示字符时,请确保控制台支持Unicode,并且它使用的字体也支持该字符

    [编辑]

    哦,我对你的方法也有一个小的更新:

    public static String displayChar2(char c) {
        if (c < 0x20 || c >= 0x80) {
            return String.format("\\u%04X", (int) c);
        }
        return Character.toString(c);
    }
    
  2. # 2 楼答案

    在Java中有很多方法可以获取Unicode字符。例如,如果您有一个正确编码为UTF-8的文件,那么这将得到以下字符:

        try (Reader reader = new FileReader(file, "UTF-8")) {
            // read characters from the reader ...
        }
    

    你最新的问题似乎是说,你真正的问题是显示字符,而不是“获取”字符。您尚未正确解释如何输出字符或在哪里输出字符,但我猜您出现问题的原因如下:

    • 你没有安装阿拉伯语字体(似乎不太可能…)
    • 显示字符的控制台(或其他什么)不懂阿拉伯语字符(似乎不太可能…)
    • 人物腐败;i、 e.它们不是您在Java程序中所期望的,或者
    • 您在输出流中使用了错误的字符编码

    后者是最有可能的解释,但正确的诊断需要更多关于创建输出流/写入器和写入方式的信息。(提示:添加到问题中的代码不会输出任何内容。它只是将一个字符转换为Java字符串。)

  3. # 3 楼答案

    Java中的字符只是数值——因此,如果ch是字符,则可以执行int i = ch;,然后打印i的值。(这忽略了代码点与字符之间的复杂性——但我相信这对于阿拉伯语字母来说是好的。)