解决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乱码终极方案相关推荐

  1. ASP+Access中文乱码的解决方法,ASP中文乱码,asp乱码问题

    确保编码声明正确(例:时尚淘女之家http://www.tao36524.com) 如果您使用的是国外空间,默认是西欧而不是GB2312,你可以通过强制为GD2312的方式! 在数据提取页面的第一行代 ...

  2. java中html中文乱码怎么解决_Java读取网页HTML 汉字乱码 (已解决,bufferedReader中编码改成...

    Java读取网页HTML 汉字乱码 (已解决,bufferedReader中编码改成 Java读取网页HTML 汉字乱码 (已解决,bufferedReader中编码改成跟网页的一致即可) #网页HT ...

  3. php android 乱码,如何解决android php 中文乱码问题

    android php中文乱码的解决办法:1.填写对应的格式,代码如"httpResponse.getEntity()),HTTP.UTF_8":2.使用流的形式,代码如" ...

  4. php 数据库查询乱码,怎么解决php数据库查询乱码问题

    怎么解决php数据库查询乱码问题,数据库,字符集,乱码,操作,简体中文 怎么解决php数据库查询乱码问题 易采站长站,站长之家为您整理了怎么解决php数据库查询乱码问题的相关内容. php数据库查询乱 ...

  5. html文件记事本打开乱码,如何解决记事本打开出现乱码

    很多人都喜欢把一些重要的资料保存在记事本中,但当需要用到时,打开记事本却发现里面的文字全部都变成乱码的了,今天学习啦小编给大家介绍下如何解决记事本打开出现乱码吧. 解决记事本打开出现乱码方法 故障分析 ...

  6. 提示缺少unicode打开乱码_解决记事本打开出现乱码的小技巧

    很多人都喜欢把一些重要的资料保存在记事本中,但当需要用到时,打开记事本却发现里面的文字全部都变成乱码的了,这令不少朋友烦恼不已.那么,记事本打开出现乱码怎么办呢?今天U大侠小编就和大家说说记事本打开出 ...

  7. php运行显示中文乱码,如何解决PHP界面显示中文乱码的问题

    如何解决PHP界面显示中文乱码的问题 发布时间:2020-07-14 15:19:00 来源:亿速云 阅读:74 作者:Leah 这期内容当中小编将会给大家带来有关如何解决PHP界面显示中文乱码的问题 ...

  8. tomcat乱码怎么解决_PDF转word乱码怎么办?解决方法如此简单!

    PDF转word乱码怎么办?我们经常需要将PDF文件转换成word格式,因为这样就可以对pdf文件进行编辑啦.但是有不少朋友在将pdf转word的时候会出现乱码的问题,你头疼不已!别担心,下面小编要告 ...

  9. python idea控制台中文乱码_python 解决cv2绘制中文乱码问题

    python 解决cv2绘制中文乱码问题 因为使用cv2.putText() 只能显示英文字符,中文会出现乱码问题, 因此使用PIL在图片上绘制添加中文,可以指定字体文件. 大体思路: OpenCV图 ...

最新文章

  1. Ubuntu 安装软件方法
  2. accessid管理_Access班级管理的使用方法
  3. 前线观察 | AWS re:Invent 2018见闻实录
  4. 【R语言】迫松分布估计--判断是否符合迫松分布
  5. HTML5+PhoneGap相机拍照
  6. VMware虚拟机里面无法直接访问主机磁盘怎么办?
  7. python代数式的表达方式_关于python字典类型最疯狂的表达方式
  8. 从项目实际问题引发的思考
  9. 数百名车主因断网被锁车外 马斯克:将确保此类事件不再发生
  10. uitextfield长按显示英文select all,copy,paste?
  11. Git前世今生-版本控制软件的发展
  12. iOS 中的视图函数 init initwithnib viewDidLoad viewWillAppear的总结
  13. bootstrap $(“#xxx“).bootstrapTable(‘getData‘)值不对
  14. window下的批处理命令学习
  15. MySQL数据操作与查询笔记 • 【第6章 聚合函数和分组查询】
  16. 如何用Python批量打印PDF文档、Word文档、Excel表格、图片呢?
  17. Android packageManager.setComponentEnabledSetting()和setApplicationEnabledSetting()方法介绍
  18. 神经计算棒官方例程演示及填坑
  19. 平面设计素材:15000套高端平面logo,免费赠送给所有平面设计师...
  20. 一年半,从编程都不懂的小白到成功入职!

热门文章

  1. 3.Java 面试题整理(线程篇)
  2. Spring Boot基础学习笔记:可视化迎新
  3. bzoj1051 受欢迎的牛 结论+tarjan
  4. 2017.9.9 股票交易 思考记录
  5. 【英语学习】【WOTD】asperity 释义/词源/示例
  6. 【英语学习】【WOTD】valetudinarian 释义/词源/示例
  7. 【OpenStack】【Keystone】安装与配置详解
  8. 进程间通信方式_第四十九期-Linux内核中的进程概述(4)
  9. 统计长整数n的各位上出现数字1、2、3 的次数
  10. java spring getbean_spring依赖注入中获取JavaBean