Как я могу отображать шведские символы в приложении Android? - PullRequest
2 голосов
/ 14 февраля 2011

У меня есть база данных, из которой я извлекаю данные в свой проект 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 ]

1 голос
/ 16 февраля 2011

Похоже, что ваши строковые данные изначально были закодированы в 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");.

0 голосов
/ 13 июня 2014

Это небольшой старый пост, но если вы импортируете данные в sqlite с помощью оболочки Windows cmd, попробуйте сделать это в оболочке:

c:> chcp 65001

Это изменит кодовую страницу оболочки cmd на utf 8

c:> sqlite3 database.db

где insertts.sql - это последовательность вставок в UTF-8 (БЕЗ ХАРАКТЕРИСТИК.). Вы можете создать такой файл, используя Notepad ++

Надеюсь, это поможет

...