最近在做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. }  

更多相关文章

  1. libgdx框架的配置
  2. Android下PM命令常见使用方法
  3. Android(安卓)开机动画动态替换
  4. 设置文本边框 与 边框的样式:
  5. android使用艺术字,自定义字体
  6. android打开文件、保存对话框、创建新文件夹对话框
  7. Android(安卓)错误提示:Conversion to Dalvik format failed with
  8. [文件] Python读取txt存储至xls
  9. Android中保存图片到本地功能实现

随机推荐

  1. Android(安卓)自动 打包
  2. android 有效加载大Bitmap - 开发文档翻
  3. Android的emulator和ADB工具使用
  4. 【Android入门】Actionbar不显示overflow
  5. 设置Android默认壁纸为动态壁纸
  6. Android(安卓)加载图片并在上面画图总结
  7. ubuntu 下载配置 android 开发环境 [ jdk
  8. Android(安卓)Studio 安装完成不能打开的
  9. Android(安卓)Uri获取真实路径以及文件名
  10. Android(安卓)Linux Kernel 移植流程