Когда я запускаю созданный JAR-файл, JTable не отображает UTF-8. Когда я запускаю его в IntelliJ IDEA, он отображается правильно.
У меня есть пара идей, но я не могу найти способ отладки. Во-первых, данные таблицы сериализуются, может, есть что-то, чего я не знаю, и мне нужно где-то указать, что это UTF-8?
Во-вторых, может быть, мне нужно где-то указать кодирование, где я создаю и заполняю JTable как элемент GUI? Я добавляю фрагменты кода для обоих
Код, который я использую для сохранения и извлечения данных, находится здесь:
private void deserialiseStatsData(){
try {
FileInputStream fis = new FileInputStream("tabledata.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
tableData = (TableData) ois.readObject();
fis.close();
ois.close();
} catch (Exception e) {
tableData = new TableData();
}
}
private void serialiseStatsData(){
try {
FileOutputStream fos = new FileOutputStream("tabledata.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(tableData);
oos.close();
fos.close();
}
catch (Exception e) {e.printStackTrace();}
}
Код для создания и заполнения таблицы:
private void createUIComponents() {
String headers[] = {"Exercise", "Did Succeed?", "Times Failed Before 1st Success",
"Accuracy (%), ", "Checked Result Before Succeeding"};
TableData dataTable = null;
try {
FileInputStream fis = new FileInputStream("tabledata.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
dataTable = (TableData) ois.readObject();
fis.close();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
Object[][] data;
int rows = dataTable.getRows();
int cols = headers.length;
data = new Object[rows][cols];
for (int j = 0; j < rows; j++) {
data[j][0] = dataTable.getLine(j).getExercise();
data[j][1] = dataTable.getLine(j).isSuccess();
data[j][2] = dataTable.getLine(j).getNoOfFails();
data[j][3] = dataTable.getLine(j).getPercentage();
data[j][4] = dataTable.getLine(j).isAnswerCheckBeforeSuccess();
}
table = new JTable(data, headers);
}
Что я пробовал:
Добавлены строки в параметры виртуальной машины:
-Dconsole.encoding = UTF-8
-Dfile.encoding = UTF-8
Изменена кодировка в настройках -> Кодировки файлов на UTF-8
На данный момент я не знаю, что еще Я мог бы сделать.
Отредактировано: я получаю такие вещи в JTable:
Когда я должен получить такие вещи:
Список символов, который не отображается:
- union = '\ u222A';
- пересечение = '\ u2229';
- product = '\ u2A2F';
- разница = '\ u2216';
- infinity = '\ u221E';
- ownTo = '\ u2208';
- weakSubset = '\ u2286';
- ProperSubset = '\ u2282';