• 注册
当前位置:1313e > 默认分类 >正文

歌曲名、艺术家名显示乱码

歌曲名、艺术家名显示乱码

MediaPickerActivity.java中添加方法changeStringEncode用来转换字符串编码:

 

publicstatic String changeStringEncode(String content)

{

 if(java.nio.charset.Charset.forName("GB2312").newEncoder().canEncode(content))

  {

       //Log.d(TAG, "GB2312...");

  }

  elseif(java.nio.charset.Charset.forName("ISO-8859-1").newEncoder().canEncode(content))

  {

       //Log.d(TAG, "ISO-8859-1...");

      try

       {

                 content= new String(content.getBytes("ISO-8859-1"), "GBK");

       }

       catch (UnsupportedEncodingException e)

       {

                 //TODO Auto-generated catch block

                 e.printStackTrace();

        }

   }

   else if(java.nio.charset.Charset.forName("GBK").newEncoder().canEncode(content))

   {

        //Log.d(TAG, "GBK...");

   }

   elseif(java.nio.charset.Charset.forName("UTF-8").newEncoder().canEncode(content))

   {

                   try {

                 content= new String(content.getBytes("UTF-8"), "GBK");

        }

        catch (UnsupportedEncodingException e){

                 //TODO Auto-generated catch block

                 e.printStackTrace();

        }

                 //Log.d(TAG,"UTF-8...");

    }

    else if(java.nio.charset.Charset.forName("UTF-16").newEncoder().canEncode(content))

    {

        //Log.d(TAG, "UTF-16...");

    }

    return content;

}

之后在bindView中修改转换标题名,专辑名,艺术家名:

//String name =cursor.getString(mTitleIdx);

String name =changeStringEncode(cursor.getString(mTitleIdx));

 

//name =cursor.getString(mAlbumIdx);

name = changeStringEncode(cursor.getString(mAlbumIdx));

 

//name =cursor.getString(mArtistIdx);

name = changeStringEncode(cursor.getString(mArtistIdx));

 

二、歌词在切换语言后显示乱码

多语言环境中,中文歌曲的歌词在中文环境下是正常显示的,而切换到其他如法语、阿拉伯语等语言时,会发生乱码的情况,修改点如下:

fileReader= new BufferedReader(new InputStreamReader(connection.getInputStream(),LyricsLocale.defLocale2CharSet()));

改为

FileInputStreamfis = new FileInputStream(lrcFile);

BufferedInputStreamin = new BufferedInputStream(fis);

in.mark(4);

byte[]first3bytes = new byte[3];

n.read(first3bytes);

in.reset();

if(first3bytes[0] == (byte) 0xEF && first3bytes[1] == (byte) 0xBB&& first3bytes[2] == (byte) 0xBF) {// utf-8

         fileReader = new BufferedReader(newInputStreamReader(new FileInputStream(lrcFile), "utf-8"));

}

elseif (first3bytes[0] == (byte) 0xFF && first3bytes[1] == (byte) 0xFE) {//unicode

         fileReader = new BufferedReader(newInputStreamReader(new FileInputStream(lrcFile), "unicode"));                                  

}

elseif (first3bytes[0] == (byte) 0xFE && first3bytes[1] == (byte) 0xFF) {//utf-16be

         fileReader = new BufferedReader(newInputStreamReader(new FileInputStream(lrcFile), "utf-16be"));                                                                      

}

elseif (first3bytes[0] == (byte) 0xFF && first3bytes[1] == (byte) 0xFF) {//utf-16le

         fileReader = new BufferedReader(newInputStreamReader(new FileInputStream(lrcFile), "utf-16le"));                                                                       

}

else{// GBK

         fileReader = new BufferedReader(newInputStreamReader(new FileInputStream(lrcFile), "GBK"));

}


本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录