Тема: Кодування в форматі DBF і DAT
Доброго дня всім.
В мене файлики банківської виписка в форматі DBF і DAT. коли вивожу їх зміст в консоль, пише крякозяблики, те саме показує в jtextarea.(слово "сума" написано кирилецею в коді)
Для читання використовую о це: com.linuxense.javadbf.DBFReader(може проблема в ньому). Кодування обох файлів UTF-8, так показує метод isr.getEncoding()
сума: 4.000000000| desc: ÒÎÂÀÐÈÑÒÂÎ Ç ÎÁÌÅÆÅÍÎÞ | ÒÎÂÀÐÈÑÒÂÎ Г
Коли ж я відкриваю цей файл в writer запитує кодування, ставлю windows 1251 і все чудово показує.
ось такий код:
try {
String dbfPath = "2309201.dbf";
InputStream inputStream = new FileInputStream(dbfPath);
InputStreamReader isr = new InputStreamReader(inputStream);
DBFReader reader = new DBFReader(inputStream);
Object[] rowObjects; BigDecimal price = new BigDecimal(0); String description = "", ansiString = "";
while ((rowObjects = reader.nextRecord()) != null) {
price = (BigDecimal) rowObjects[12];
description = (String) rowObjects[4];
ansiString = new String(description.getBytes("UTF8"), "Windows-1251");
System.out.println("сума: "+price+ "| desc: "+description+" | "+ ansiString);
}
inputStream.close();
JFrame f = new JFrame();
f.setBounds(100, 100, 700, 500);
JTextArea textArea = new JTextArea();
textArea.setText("сума: "+ price +"\nопис: "+ description+"\n"+ansiString);
f.add(textArea);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} catch (Exception e) {
e.printStackTrace();
}