Проблема с кодировкой Firebird
Есть база данных Firebird, в ней таблица, в которой единственный столбик, содержащий строки типа varchar на русском. Есть функция, которая создает из этой таблицы массив и передает его в адаптер спиннера. Проблема в том, что данные в спиннере появляются, но их кодировка сбита. Создавалась база данных с параметром default character set WIN1251. Коннектор и функция получения массива выглядят так:
//свойства коннектора
fun getConnectionProperties():Properties{
Class.forName("org.firebirdsql.jdbc.FBDriver")
val props = Properties()
props.setProperty("user", "SYSDBA")
props.setProperty("password", "masterkey")
props.setProperty("encoding", "WIN1251")
return props
}
//получение массива
fun getListValues():Array<String?>{
val values:MutableList<String> = mutableListOf()
val connection: Connection = DriverManager.getConnection(URL, getConnectionProperties())
val statement: Statement = connection.createStatement()
val query = "select type from basetype;"
val dataBaseResponse: ResultSet = statement.executeQuery(query)
while(dataBaseResponse.next()){
val temp = dataBaseResponse.getString("type")
values.add(temp)
}
return values.toTypedArray()
}
БД расположена на локальном Firebird SQL сервере.
Ответы (1 шт):
Автор решения: ezh
→ Ссылка
while(dataBaseResponse.next()){
var temp = dataBaseResponse.getBytes("type")
values.add(String(temp, Charset.forName("CP866")))
}