Как я могу отображать шведские символы в приложении Android?
У меня есть база данных, из которой я извлекаю данные в свой проект Android. Там есть несколько строк текста с шведскими буквами å, ä, ö, записанными в виде: √•=å, √§=ä, √δ=ö. Как лучше всего преобразовать эти символы в настоящие буквы, прежде чем я напечатаю их в текстовом представлении в приложении? Является ли замена, как замена √ • на å, способом? Как бы это было введено в запросе, который сейчас извлекает данные:
public Cursor getAlternative1(long categoryid, int questionid) {
final String MY_QUERY = "SELECT question, image, alternative, questionid, correct FROM tbl_question a INNER JOIN tbl_alternative b ON a._id=b.questionid AND b.categoryid=a.categoryid WHERE a.categoryid=? AND a._id=?";
Cursor cursor = mDb.rawQuery(MY_QUERY, new String[]{String.valueOf(categoryid), String.valueOf(questionid)});
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
}
Спасибо за любую помощь!
2 ответа
Похоже, что ваши строковые данные были изначально закодированы в 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");
,
Это небольшой старый пост, но если вы импортируете данные в sqlite с помощью оболочки Windows cmd, попробуйте сделать это в оболочке:
c:> chcp 65001
Это изменит кодовую страницу оболочки cmd на utf 8
c:> sqlite3 database.db где insertts.sql - это последовательность вставок в UTF-8 (БЕЗ ХАРАКТЕРА БОМ!!). Вы можете создать такой файл с помощью Notepad++ Надеюсь, поможет