Я запрашиваю старую базу данных access 97 с испанскими sh символами - ú í ó ú. Я могу нормально читать символы, используя access, поэтому я предполагаю, что он использует ISO-8859-1
, однако я не могу преобразовать их в UTF-8.
Не уверен, что моя проблема связана с моим соединением:
public static Connection baseAccess(String base) {
try {
java.util.Properties propiedades = new java.util.Properties();
propiedades.put("charSet", "ISO-8859-1");
return DriverManager.getConnection(String.format("jdbc:ucanaccess://%s", base),propiedades);
} catch (SQLException ex) {}
}
Или с моим разбором строки:
try (ResultSet rs = UtileriaDb.baseAccess(contabilidad).createStatement().executeQuery(sql);){
while(rs.next()){
String fromAccess = rs.getString(1);
System.out.println(fromAccess);
String transformed = new String(fromAccess.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(transformed);
}
} catch (Exception ex) {}
Поэтому, когда я ожидаю:
Año Café
Я получаю:
A�o Caf�
A? O Caf?
Обновление: Попытка получить содержимое байта из набора результатов, выполнив: byte[] fromAccess = rs.getBytes(1);
, но я получил исключение
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.4 incompatible data type in conversion: from SQL type VARCHAR to [B, value: myText
at net.ucanaccess.jdbc.UcanaccessResultSet.getBytes(UcanaccessResultSet.java:339)
Так вот тупик, может быть есть другой способ go об этом?