android 使用getContentResolver().query 返回音乐文件的时候,如果是中文名称就会显示乱码;private void initMusics(){

String[] musicInfo = new String[]{MediaStore.Audio.Media.TITLE, 
 MediaStore.Audio.Media.DURATION,
 MediaStore.Audio.Media.ARTIST,
 MediaStore.Audio.Media._ID,
 MediaStore.Audio.Media.DATA};

Cursor cur = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
musicInfo, null, null, null);

if(cur != null){
while(cur.moveToNext()){

Music m = new Music();
m.setTitle(cur.getString(0));
m.setDuration(cur.getString(1));
m.setArtist(cur.getString(2));
m.setId(cur.getString(3));
m.setPath(cur.getString(4));
System.out.println("Music infor--->" + m);
musicList.add(m);
}
}
}
在使用 System.out.println("Music infor--->" + m); 追踪打印的时候 就出现乱码;
在模拟器上也是显示乱码
这个是在读取 音乐文件的title的时候出现的乱码。各位大侠有没转换解码的好办法。。让歌曲名在模拟器上显示正常,我看过其他的音乐播放器,在模拟器上是可以显示正常的中文歌曲名字的,但不知道怎么做到的。大家知道的讲讲。。

解决方案 »

  1.   

    Cursor cur = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
    musicInfo, null, null, null);你从数据库中去找,我怀疑数据库存的时候你就存进去的是乱码!
      

  2.   

    应该是android底层解析ID3库的bug
      

  3.   

    是读出来的文件 没有转换格式,
    String titleTemp = cur.getString(0);
    titleTemp = new String(titleTemp.getBytes("ISO-8859-1"),"GBK");
    用这个来转换就可以了