2011-02-14 95 views
2

我有一个数据库,我从我的Android项目中提取数据。这里有一些文本字符串,其中瑞典语字母å,ä,ö写为:√•=å,√§=ä,√δ=ö。在我将这些符号打印到应用程序的textview之前,将这些符号转换为实际字母的最佳方式是什么?是一种替代,就像替代√一样,要走的路?如何在现在提取数据的查询中输入:如何在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; 
      } 

感谢您的帮助!

+0

你如何将数据插入到数据库中?当我将瑞典语字母插入我的时候,它就像预期的那样出现在我的`ListView`中。 – RivieraKid 2011-02-15 13:28:50

+0

它们被插入为√= =,√=√,√8=ö,这些符号代表字母。这是我之后的翻译,如果上面的格式是像utf-8这样的已知格式,或者我应该做一个替换这个等等。 – kakka47 2011-02-15 14:12:24

回答

1

看来您的字符串数据最初编码为UTF-8,但被误解为MacRoman

首先要做的是确保您的数据正确存储在数据库中。您可以使用SELECT HEX(SomeColumn)查看为该字符串存储的原始字节。 SQLite中的默认编码是UTF-8,因此对于ö,正确编码的字符串将具有C3A5,å,C3A4,äC3B6。如果您看到E2889AE280A2,E2889AC2A7,E2889AE28882,则在数据进入数据库之前会发生对字符的错误解释(?→√§,?→√δ)。如果您只看到8C8A9A,则会发生相反的误解。

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

0

这是有点老了后,但如果你使用的是Windows cmd shell类型的数据导入sqlite的,尝试在shell这样做:

C:> CHCP 65001

这将改变代码CMD壳的页为UTF 8

C:> sqlite3的database.db < inserts.sql

其中inserts.sql是UTF-8(无BOM CHARACTER !!)插入物的序列。你可以使用记事本创建这种类型的文件++

希望它有帮助

相关问题