Android SQL数据库带有特殊字符,无法访问

Android SQL数据库带有特殊字符,无法访问,android,sql,csv,sqlite,Android,Sql,Csv,Sqlite,我有一个应用程序,它附带了一个预先存在的SQL数据库。我使用SQLiteAssetHelper库来管理这个预先存在的数据库。为了填充数据库,我使用了sqlite3.exe命令行程序的.import命令。我的数据库是.csv文件格式。如果我的.csv文件是ANSI格式,不支持像úã这样的字符,那么一切都可以正常工作。但是,当我通过记事本保存.csv文件并选择UTF-8编码时,我的应用程序崩溃了。我用sqlite3.exe导入ok,甚至用SQLite数据库浏览器检查,所有信息都导入数据库ok。但是,

我有一个应用程序,它附带了一个预先存在的SQL数据库。我使用SQLiteAssetHelper库来管理这个预先存在的数据库。为了填充数据库,我使用了sqlite3.exe命令行程序的.import命令。我的数据库是.csv文件格式。如果我的.csv文件是ANSI格式,不支持像úã这样的字符,那么一切都可以正常工作。但是,当我通过记事本保存.csv文件并选择UTF-8编码时,我的应用程序崩溃了。我用sqlite3.exe导入ok,甚至用SQLite数据库浏览器检查,所有信息都导入数据库ok。但是,在Android中会出现以下错误:

05-20 16:05:50.355: E/AndroidRuntime(1294): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.baianos.quizbaianos/com.baianos.quizbaianos.QuestionActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
在我的应用程序中执行查询的代码是:

        SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = 
            db.query(DB_NAME, // a. table
            COLUMNS, // b. column names
            " _id = ?", // c. selections 
            new String[] { String.valueOf(id) }, // d. selections args
            null, // e. group by
            null, // f. having
            null, // g. order by
            null); // h. limit
    if (cursor != null)
        cursor.moveToFirst();
    return cursor.getString(1);
我的查询似乎没有返回任何行,因为当我传递'id=1'或任何其他数字,并将其与数据库进行比较时,由于编码不同,来自android的1与sql数据库中的1不同。
如何在代码中告诉我在数据库中使用UTF-8?

1在ANSI和UTF-8中是相同的。我不知道错误是什么。。。但我将String.valueOf1作为参数传递,而查询不返回任何内容。但是,当我将.csv文件以ANSI格式保存在记事本中,然后将其导入数据库时,一切正常!但在这种情况下,我不能使用字符!在这两种情况下,SELECT*FROM MyTable在命令行shell中都起作用吗?CL非常感谢。当我测试你的答案时,我意识到错误出现在sqlite3.exe工具的.import功能上。尽管SQLite数据库浏览器显示一切正常,但数据库的第一行ID列中出现了错误。所以我手动更正了它,现在一切都很好,带有口音。非常感谢。