有一个省名的数据库,里面应该是放的GBK编码的中文省名数据。
SQL语句中不含中文时,按下面的代码读到了中文地名:SQLiteDatabase mSQLiteDatabase=null;
mSQLiteDatabase=SQLiteDatabase.openDatabase("mnt/sdcard/MyProject/placeName.db",null,SQLiteDatabase.OPEN_READONLY);
String sql="SELECT * FROM T_Province";
Cursor cur=mSQLiteDatabase.rawQuery(sql,null);。这样可以查询到信息
String sql="SELECT * FROM T_Province where ID<10";//这样也可以查询到信息String sql="SELECT * FROM T_Province where Name='北京'";//这样就查询不到任何记录求教各位大神sqlitesql中文乱码

解决方案 »

  1.   

    查询到的中文部分可以通过转码正确的显示:
    int num=cur.getColumnIndex("Name");
    byte[] val=cur.getBlob(num);
    String placeName="";
    try{
        placeName=new String (val,"gb3212");
       }
    catch(UnsupportedEncodingException e)
    {
        e.printStackTrace();
    }
    这样placeName里面就是正常的中文不是乱码了,可是SQL语句中含中文就查询不到任何记录了,在拼接SQL语句的时候需要转码吗?求大神指教
      

  2.   

    我用sqlite Database browser工具试了下,可以查到啊....
    字段类型为text..Android下没试过.
      

  3.   

    多谢,我的问题已经解决了。
    Windows下默认使用ANSI编码,而Android和IOS默认使用UTF-8编码,因此utf-8编码的数据库在windows读出来是乱码,而ANSI编码的数据库在Android和IOS上读出来也是乱码。
    我用SQLite Expert软件把Excel数据表导入生成了一个新的utf-8格式的数据库,就可以在Android上直接使用而不用转码了,这样一来SQL语句中不仅可以包含中文,还可以支持模糊查询了
    至于windows端还继续使用之前ANSI编码的数据库就好了