有一个省名的数据库,里面应该是放的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中文乱码
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中文乱码
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语句的时候需要转码吗?求大神指教
字段类型为text..Android下没试过.
Windows下默认使用ANSI编码,而Android和IOS默认使用UTF-8编码,因此utf-8编码的数据库在windows读出来是乱码,而ANSI编码的数据库在Android和IOS上读出来也是乱码。
我用SQLite Expert软件把Excel数据表导入生成了一个新的utf-8格式的数据库,就可以在Android上直接使用而不用转码了,这样一来SQL语句中不仅可以包含中文,还可以支持模糊查询了
至于windows端还继续使用之前ANSI编码的数据库就好了