У меня есть некоторые не-ascii символы, которые я пытаюсь отобразить в Swing JComboBox.Символы отображаются неправильно, я получаю много странных символов, где символы не-ascii должны быть:
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);
Утверждение не завершается ошибкой, но все еще отображает искаженные символы.
Я на OSX 10.6.5, Java (TM) SE Runtime Environment (сборка 1.6.0_22-b04-307-10M3261)