读SQLite数据库,SQL语句含中文时查询不到

vampire_ljw 2013-09-10 06:06:31
有一个省名的数据库,里面应该是放的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='北京'";//这样就查询不到任何记录

求教各位大神
...全文
565 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vampire_ljw 2013-09-12
  • 打赏
  • 举报
回复
引用 3 楼 guoyoulei520 的回复:
我用sqlite Database browser工具试了下,可以查到啊.... 字段类型为text.. Android下没试过.
多谢,我的问题已经解决了。 Windows下默认使用ANSI编码,而Android和IOS默认使用UTF-8编码,因此utf-8编码的数据库在windows读出来是乱码,而ANSI编码的数据库在Android和IOS上读出来也是乱码。 我用SQLite Expert软件把Excel数据表导入生成了一个新的utf-8格式的数据库,就可以在Android上直接使用而不用转码了,这样一来SQL语句中不仅可以包含中文,还可以支持模糊查询了 至于windows端还继续使用之前ANSI编码的数据库就好了
凉凉二点凉 2013-09-11
  • 打赏
  • 举报
回复
我用sqlite Database browser工具试了下,可以查到啊.... 字段类型为text.. Android下没试过.
vampire_ljw 2013-09-11
  • 打赏
  • 举报
回复
自己支持一下,求大神现身
vampire_ljw 2013-09-10
  • 打赏
  • 举报
回复
查询到的中文部分可以通过转码正确的显示: 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语句的时候需要转码吗?求大神指教

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧