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的时候出现的乱码。各位大侠有没转换解码的好办法。。让歌曲名在模拟器上显示正常,我看过其他的音乐播放器,在模拟器上是可以显示正常的中文歌曲名字的,但不知道怎么做到的。大家知道的讲讲。。
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的时候出现的乱码。各位大侠有没转换解码的好办法。。让歌曲名在模拟器上显示正常,我看过其他的音乐播放器,在模拟器上是可以显示正常的中文歌曲名字的,但不知道怎么做到的。大家知道的讲讲。。
musicInfo, null, null, null);你从数据库中去找,我怀疑数据库存的时候你就存进去的是乱码!
String titleTemp = cur.getString(0);
titleTemp = new String(titleTemp.getBytes("ISO-8859-1"),"GBK");
用这个来转换就可以了