android 读取txt转为utf-8乱码,彻底解决android读取txt乱码终极方案
解决android读取txt乱码
一,工具类FileUtil
/**
* 获取文件内容
*
* @param filePath
* @return
*/
public static String getFileOutputString(String filePath, String charset) {
try {
File file = new File(filePath);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), charset), 8192);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
sb.append("\n").append(line);
}
bufferedReader.close();
return sb.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取文件编码
* @param filePath
* @return
*/
public static String getCharset(String filePath) {
BufferedInputStream bis = null;
String charset = "GBK";
byte[] first3Bytes = new byte[3];
try {
boolean checked = false;
bis = new BufferedInputStream(new FileInputStream(filePath));
bis.mark(0);
int read = bis.read(first3Bytes, 0, 3);
if (read == -1)
return charset;
if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) {
charset = "UTF-16LE";
checked = true;
} else if (first3Bytes[0] == (byte) 0xFE
&& first3Bytes[1] == (byte) 0xFF) {
charset = "UTF-16BE";
checked = true;
} else if (first3Bytes[0] == (byte) 0xEF
&& first3Bytes[1] == (byte) 0xBB
&& first3Bytes[2] == (byte) 0xBF) {
charset = "UTF-8";
checked = true;
}
bis.mark(0);
if (!checked) {
while ((read = bis.read()) != -1) {
if (read >= 0xF0)
break;
if (0x80 <= read && read <= 0xBF) // 单独出现BF以下的,也算是GBK
break;
if (0xC0 <= read && read <= 0xDF) {
read = bis.read();
if (0x80 <= read && read <= 0xBF) // 双字节 (0xC0 - 0xDF)
// (0x80 - 0xBF),也可能在GB编码内
continue;
else
break;
} else if (0xE0 <= read && read <= 0xEF) {// 也有可能出错,但是几率较小
read = bis.read();
if (0x80 <= read && read <= 0xBF) {
read = bis.read();
if (0x80 <= read && read <= 0xBF) {
charset = "UTF-8";
break;
} else
break;
} else
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return charset;
}
二,使用方法
String charset = FileUtil.getCharset(file.getAbsolutePath());
String content = FileUtil.getFileOutputString(file.getAbsolutePath(),charset);
android 读取txt转为utf-8乱码,彻底解决android读取txt乱码终极方案相关推荐
- ASP+Access中文乱码的解决方法,ASP中文乱码,asp乱码问题
确保编码声明正确(例:时尚淘女之家http://www.tao36524.com) 如果您使用的是国外空间,默认是西欧而不是GB2312,你可以通过强制为GD2312的方式! 在数据提取页面的第一行代 ...
- java中html中文乱码怎么解决_Java读取网页HTML 汉字乱码 (已解决,bufferedReader中编码改成...
Java读取网页HTML 汉字乱码 (已解决,bufferedReader中编码改成 Java读取网页HTML 汉字乱码 (已解决,bufferedReader中编码改成跟网页的一致即可) #网页HT ...
- php android 乱码,如何解决android php 中文乱码问题
android php中文乱码的解决办法:1.填写对应的格式,代码如"httpResponse.getEntity()),HTTP.UTF_8":2.使用流的形式,代码如" ...
- php 数据库查询乱码,怎么解决php数据库查询乱码问题
怎么解决php数据库查询乱码问题,数据库,字符集,乱码,操作,简体中文 怎么解决php数据库查询乱码问题 易采站长站,站长之家为您整理了怎么解决php数据库查询乱码问题的相关内容. php数据库查询乱 ...
- html文件记事本打开乱码,如何解决记事本打开出现乱码
很多人都喜欢把一些重要的资料保存在记事本中,但当需要用到时,打开记事本却发现里面的文字全部都变成乱码的了,今天学习啦小编给大家介绍下如何解决记事本打开出现乱码吧. 解决记事本打开出现乱码方法 故障分析 ...
- 提示缺少unicode打开乱码_解决记事本打开出现乱码的小技巧
很多人都喜欢把一些重要的资料保存在记事本中,但当需要用到时,打开记事本却发现里面的文字全部都变成乱码的了,这令不少朋友烦恼不已.那么,记事本打开出现乱码怎么办呢?今天U大侠小编就和大家说说记事本打开出 ...
- php运行显示中文乱码,如何解决PHP界面显示中文乱码的问题
如何解决PHP界面显示中文乱码的问题 发布时间:2020-07-14 15:19:00 来源:亿速云 阅读:74 作者:Leah 这期内容当中小编将会给大家带来有关如何解决PHP界面显示中文乱码的问题 ...
- tomcat乱码怎么解决_PDF转word乱码怎么办?解决方法如此简单!
PDF转word乱码怎么办?我们经常需要将PDF文件转换成word格式,因为这样就可以对pdf文件进行编辑啦.但是有不少朋友在将pdf转word的时候会出现乱码的问题,你头疼不已!别担心,下面小编要告 ...
- python idea控制台中文乱码_python 解决cv2绘制中文乱码问题
python 解决cv2绘制中文乱码问题 因为使用cv2.putText() 只能显示英文字符,中文会出现乱码问题, 因此使用PIL在图片上绘制添加中文,可以指定字体文件. 大体思路: OpenCV图 ...
最新文章
- Ubuntu 安装软件方法
- accessid管理_Access班级管理的使用方法
- 前线观察 | AWS re:Invent 2018见闻实录
- 【R语言】迫松分布估计--判断是否符合迫松分布
- HTML5+PhoneGap相机拍照
- VMware虚拟机里面无法直接访问主机磁盘怎么办?
- python代数式的表达方式_关于python字典类型最疯狂的表达方式
- 从项目实际问题引发的思考
- 数百名车主因断网被锁车外 马斯克:将确保此类事件不再发生
- uitextfield长按显示英文select all,copy,paste?
- Git前世今生-版本控制软件的发展
- iOS 中的视图函数 init initwithnib viewDidLoad viewWillAppear的总结
- bootstrap $(“#xxx“).bootstrapTable(‘getData‘)值不对
- window下的批处理命令学习
- MySQL数据操作与查询笔记 • 【第6章 聚合函数和分组查询】
- 如何用Python批量打印PDF文档、Word文档、Excel表格、图片呢?
- Android packageManager.setComponentEnabledSetting()和setApplicationEnabledSetting()方法介绍
- 神经计算棒官方例程演示及填坑
- 平面设计素材:15000套高端平面logo,免费赠送给所有平面设计师...
- 一年半,从编程都不懂的小白到成功入职!
热门文章
- 3.Java 面试题整理(线程篇)
- Spring Boot基础学习笔记:可视化迎新
- bzoj1051 受欢迎的牛 结论+tarjan
- 2017.9.9 股票交易 思考记录
- 【英语学习】【WOTD】asperity 释义/词源/示例
- 【英语学习】【WOTD】valetudinarian 释义/词源/示例
- 【OpenStack】【Keystone】安装与配置详解
- 进程间通信方式_第四十九期-Linux内核中的进程概述(4)
- 统计长整数n的各位上出现数字1、2、3 的次数
- java spring getbean_spring依赖注入中获取JavaBean