java - Swing 不显示 unicode 字符

标签 java swing fonts

我尝试在 Swing JComboBox 中显示一些非 ascii 字符。字符显示不正确,我得到很多奇怪的字符,非 ascii 字符应该是: Garbled ComboBox

import javax.swing.*;
public class Test {
  public static void main(String[] args) {
    String[] choices = new String[]{"Good's","Bad’s","தமிழ்"};
    for (String s : choices) System.out.println(s);
    JComboBox choiceBox = new JComboBox(choices);

    JFrame frame = new JFrame("Test");
    frame.setSize(400, 400);
    frame.add(choiceBox);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

(注意 Bad 中略有不同的撇号,这是整件事的开始。)

System.out.println 调用在我的终端中显示字符。

SO 上有很多关于此的问题,他们建议从 GraphicsEnvironment 中列出字体并仅选择那些声称可以显示我的字符的字体。不幸的是,这个技巧对我不起作用。

Font font = new Font("Ariel", Font.PLAIN, 12);
for (String s : choices) assert font.canDisplayUpTo(s) < 0;
choiceBox.setFont(font);

assert没有失败,但是还是显示乱码。

我使用的是 OSX 10.6.5,Java(TM) SE 运行时环境(build 1.6.0_22-b04-307-10M3261)

最佳答案

确保您的编译器使用与您的编辑器相同的编码(您的编辑器似乎已经使用与控制台相同的编码,并且编译器通常使用 VM 的默认编码,由 file.encoding 属性)。

您可以通过为编译器提供 -encoding 选项,或在 ant 中提供 encoding= 属性来做到这一点。

关于java - Swing 不显示 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366048/

相关文章:

java - 为什么 CustomFieldSerializer 需要静态方法?

java.lang.ClassNotFoundException : org. springframework.boot.SpringApplication 与 maven-jar-plugin

java - 带有 Google Play 服务的 Android 地理围栏 6.5.87

java - 多类图形用户界面

java - 向 android studio 项目添加字体导致构建失败

fonts - 如何将位图字体添加到 SpriteBuilder

java - 为什么java中多线程写文件速度较慢

java - 将数组列表中的随机项目放入 JLabel

java - 如何更改 JTabbedPane 的背景颜色?

qt - 在多个平台上将像素大小转换为字体大小