Android音乐播放器读取歌词.lrc文件乱码问题解决方法

      最近在做Android音乐播放器,在读取本地歌词的时候,老是乱码,使我很郁闷:今天在网上看到一个文件转码的文章,彻底解决了我的乱码问题,这样我就不用自己去手动的转码lrc歌词文件你的编码了,现在与大家分享一下这一文章:

 

[java]  view plain  copy
  1. package com.qgmobile.utils;  
  2.   
  3. import java.io.BufferedInputStream;  
  4. import java.io.BufferedReader;  
  5. import java.io.File;  
  6. import java.io.FileInputStream;  
  7. import java.io.IOException;  
  8. import java.io.InputStreamReader;  
  9.   
  10. /** 
  11.  * 转换文件的编码格式 
  12.  * @author yangchuxi 
  13.  * 
  14.  */  
  15. public class ConvertFileCode {  
  16.  public String converfile(String filepath){  
  17.   System.out.println("ConvertFileCode--------->"+filepath);  
  18.   File file=new File(filepath);  
  19.   FileInputStream fis=null;  
  20.   BufferedInputStream bis=null;  
  21.   BufferedReader reader=null;  
  22.   String text="";  
  23.   try {  
  24.    fis=new FileInputStream(file);  
  25.    bis=new BufferedInputStream(fis);  
  26.    bis.mark(4);  
  27.    byte[] first3bytes=new byte[3];  
  28. //   System.out.println("");  
  29.    //找到文档的前三个字节并自动判断文档类型。  
  30.    bis.read(first3bytes);  
  31.    bis.reset();  
  32.      if (first3bytes[0] == (byte0xEF && first3bytes[1] == (byte0xBB  
  33.                       && first3bytes[2] == (byte0xBF) {// utf-8  
  34.   
  35.               reader = new BufferedReader(new InputStreamReader(bis, "utf-8"));  
  36.   
  37.       } else if (first3bytes[0] == (byte0xFF  
  38.                       && first3bytes[1] == (byte0xFE) {  
  39.   
  40.               reader = new BufferedReader(  
  41.                               new InputStreamReader(bis, "unicode"));  
  42.       } else if (first3bytes[0] == (byte0xFE  
  43.                       && first3bytes[1] == (byte0xFF) {  
  44.   
  45.               reader = new BufferedReader(new InputStreamReader(bis,  
  46.                               "utf-16be"));  
  47.       } else if (first3bytes[0] == (byte0xFF  
  48.                       && first3bytes[1] == (byte0xFF) {  
  49.   
  50.               reader = new BufferedReader(new InputStreamReader(bis,  
  51.                               "utf-16le"));  
  52.       } else {  
  53.   
  54.               reader = new BufferedReader(new InputStreamReader(bis, "GBK"));  
  55.       }  
  56.       String str = reader.readLine();  
  57.   
  58.          while (str != null) {  
  59.              text = text + str + "/n";  
  60.              str = reader.readLine();  
  61.            }  
  62.          System.out.println("text"+text);  
  63.   } catch (Exception e) {  
  64.    e.printStackTrace();  
  65.   }finally{  
  66.    if (fis!=null) {  
  67.     try {  
  68.      fis.close();  
  69.     } catch (IOException e) {  
  70.      e.printStackTrace();  
  71.     }  
  72.    }  
  73.    if(bis!=null){  
  74.     try {  
  75.      bis.close();  
  76.     } catch (IOException e) {  
  77.      e.printStackTrace();  
  78.     }  
  79.    }  
  80.   }  
  81.     
  82.   return text;  
  83.     
  84.  }  
  85. }  
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值