如何在Android应用中显示瑞典字符?

时间:2011-02-14 10:36:19

标签: android sqlite character mojibake

我有一个数据库,我从我的Android项目中提取数据。瑞典的字母å,ä,ö有一些文字串写成:√•=å,√§=ä,√δ=ö。在将这些符号打印到应用中的textview之前,将这些符号转换为实际字母的最佳方法是什么?是替换,比如替换√•用å,要走的路?如何在现在获取数据的查询中输入:

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 个答案:

答案 0 :(得分:1)

您的字符串数据最初在UTF-8中进行了编码,但却被误解为MacRoman

要做的第一件事是确保您的数据正确存储在数据库中。您可以使用SELECT HEX(SomeColumn)查看为字符串存储的原始字节。 SQLite中的默认编码是UTF-8,因此正确编码的字符串C3A5åC3A4äC3B6ö {1}}。如果您看到E2889AE280A2E2889AC2A7E2889AE28882,那么在数据进入之前就会发生对字符(å→√•,ä→√§,ö→√)的错误解释DB。如果你只是看到8C8A9A,那么就会发生相反的误解。

如果您的数据库是正确的,那么它可能是一个I / O例程,它认为系统编码是UTF-8,当它真的是MacRoman时。尝试类似System.setProperty("file.encoding", "macintosh");的内容。

答案 1 :(得分:0)

这是一个很老的帖子,但是如果你使用windows cmd shell将数据导入sqlite,请尝试在shell中执行此操作:

C:GT; chcp 65001

这会将cmd shell的代码页更改为utf 8

C:GT; sqlite3 database.db< inserts.sql

其中inserts.sql是UTF-8(WITHOUT BOM CHARACTER !!)插入序列。您可以使用Notepad ++

创建该类型的文件

希望有所帮助