Android音乐播放器读取歌词.lrc文件乱码问题解决方法
16lz
2021-01-26
最近在做Android音乐播放器,在读取本地歌词的时候,老是乱码,使我很郁闷:今天在网上看到一个文件转码的文章,彻底解决了我的乱码问题,这样我就不用自己去手动的转码lrc歌词文件你的编码了,现在与大家分享一下这一文章:
[java] view plain copy
- package com.qgmobile.utils;
- import java.io.BufferedInputStream;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- /**
- * 转换文件的编码格式
- * @author yangchuxi
- *
- */
- public class ConvertFileCode {
- public String converfile(String filepath){
- System.out.println("ConvertFileCode--------->"+filepath);
- File file=new File(filepath);
- FileInputStream fis=null;
- BufferedInputStream bis=null;
- BufferedReader reader=null;
- String text="";
- try {
- fis=new FileInputStream(file);
- bis=new BufferedInputStream(fis);
- bis.mark(4);
- byte[] first3bytes=new byte[3];
- // System.out.println("");
- //找到文档的前三个字节并自动判断文档类型。
- bis.read(first3bytes);
- bis.reset();
- if (first3bytes[0] == (byte) 0xEF && first3bytes[1] == (byte) 0xBB
- && first3bytes[2] == (byte) 0xBF) {// utf-8
- reader = new BufferedReader(new InputStreamReader(bis, "utf-8"));
- } else if (first3bytes[0] == (byte) 0xFF
- && first3bytes[1] == (byte) 0xFE) {
- reader = new BufferedReader(
- new InputStreamReader(bis, "unicode"));
- } else if (first3bytes[0] == (byte) 0xFE
- && first3bytes[1] == (byte) 0xFF) {
- reader = new BufferedReader(new InputStreamReader(bis,
- "utf-16be"));
- } else if (first3bytes[0] == (byte) 0xFF
- && first3bytes[1] == (byte) 0xFF) {
- reader = new BufferedReader(new InputStreamReader(bis,
- "utf-16le"));
- } else {
- reader = new BufferedReader(new InputStreamReader(bis, "GBK"));
- }
- String str = reader.readLine();
- while (str != null) {
- text = text + str + "/n";
- str = reader.readLine();
- }
- System.out.println("text"+text);
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- if (fis!=null) {
- try {
- fis.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if(bis!=null){
- try {
- bis.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return text;
- }
- }
更多相关文章
- libgdx框架的配置
- Android下PM命令常见使用方法
- Android(安卓)开机动画动态替换
- 设置文本边框 与 边框的样式:
- android使用艺术字,自定义字体
- android打开文件、保存对话框、创建新文件夹对话框
- Android(安卓)错误提示:Conversion to Dalvik format failed with
- [文件] Python读取txt存储至xls
- Android中保存图片到本地功能实现