Swing不显示unicode字符

Kei*_*all 3 java fonts swing

我有一些非ascii字符,我试图在Swing JComboBox中显示.字符显示不正确,我得到很多奇怪的字符,其中非ascii字符应该是: 乱码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);
  }
}
Run Code Online (Sandbox Code Playgroud)

(注意Bad's中略有不同的撇号,这就是整个事情的起源.)

System.out.println呼叫在我的终端中显示正好的字符.

关于这一点有很多问题,他们建议列出来自GraphicsEnvironment的字体,只挑选声称显示我的字符的字体.不幸的是,这个技巧对我不起作用.

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

断言不会失败,但仍会显示乱码.

我在OSX 10.6.5,Java(TM)SE运行时环境(版本1.6.0_22-b04-307-10M3261)

Paŭ*_*ann 5

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

您可以通过给-encoding编译器选项或encoding=ant中的属性来执行此操作.