java - 为什么某些 Unicode 字符在控制台中显示为问号?

标签 java unicode

我们被要求编写一个程序来读取文本文件并显示 Unicode 字符的摘要。在执行此操作时,我遇到了一些 Unicode 字符的问题,这些字符在我的控制台中显示为问号。但是,当我使用 Swing 输出相同的 Unicode 文本时,它不再是问号了

    System.out.println("\u0126"); // appears to be ? in my console.

    JOptionPane.showMessageDialog(null,"\u0126"); // seems to display the character successfuly

因为我要使用 GUI,所以我可以把问题抛在脑后,但我想要一个解释,一些像我这样的初学者可以理解的东西。

为什么有些 Unicode 字符在控制台打印时显示为问号,但在 Swing 中打印不正确? (Eclipse、NetBeans、JCreator、JGrasp 都这样做,我认为是我的 IDE 有问题)。

是编码问题还是字体问题?我应该怎么做才能在控制台中成功显示 Unicode 文本,而不会在将来遇到任何问号问题?

最佳答案

UNICODE 生成的字符将取决于作为您正在使用的字体一部分的字符字形。大多数字体只有完整 UNICODE 标准的一个子集。例如,如果你想显示简体中文,你使用的字体必须有简体中文的字形。

UNICODE Consortium有一些关于这方面的信息。

关于java - 为什么某些 Unicode 字符在控制台中显示为问号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18856056/

相关文章:

java - 如何在方法签名中使用泛型类型?

java - JPA 存储库 - 改进 findAll() 性能

python - Django:包含 Unicode 字符的电子邮件附件中的 CSV 会导致额外的换行符

macos - 如何在没有数字键盘的情况下在 mac 上输入 unicode 字符?

java - 如何切换数字范围的语句?

java - 为什么这个数字要向下舍入?

java - 从 JavaScript 转换为 Java 但没有给出相同的输出

Python 的 unicode

python - UnicodeDecodeError : 'utf8' codec can't decode bytes in position 3-6: invalid data

python - 从 BinaryField 使用 unicode 记录 sql 时出现 Django UnicodeEncodeError