Похоже, что ваши строковые данные изначально были закодированы в UTF-8 , но их неправильно интерпретируют как MacRoman .
Первое, что нужно сделать, это убедиться, чтоваши данные хранятся в базе данных правильно.Вы можете использовать SELECT HEX(SomeColumn)
, чтобы увидеть необработанные байты, которые хранятся для строки.Кодировка по умолчанию в SQLite - UTF-8, поэтому правильно закодированная строка будет иметь C3A5
для å
, C3A4
для ä
и C3B6
для ö
.Если вы видите E2889AE280A2
, E2889AC2A7
, E2889AE28882
, то неправильная интерпретация символов (å → √ •, ä → √§, ö → √δ) происходит до того, как данные попадают в БД.Если вы просто видите 8C
, 8A
и 9A
, то выполняется обратное неверное толкование.
Если ваша база данных верна, то это, вероятно, подпрограмма ввода-вывода, которая считает кодировку системыэто UTF-8, когда это действительно MacRoman.Попробуйте что-то вроде System.setProperty("file.encoding", "macintosh");
.