最近java读取文件的时候,经常碰到中文乱码,特研究了一下java 的编码格式,在java 中

java编码与txt编码对应 java txt

unicode unicode big endian

utf-8 utf-8

utf-16 unicode

gb2312 ANSIjava 读取txt如果编码格式不对就会出现乱码格式,通过下边方法获取文本文件编码格式,然后以指定的编码读取文件,就不会出现乱码(简单测试了一下,但是也不保证100%)

private static String getFilecharset(File sourceFile) {

String charset = "GBK";

byte[] first3Bytes = new byte[3];

try {

boolean checked = false;

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(sourceFile));

bis.mark(0);

int read = bis.read(first3Bytes, 0, 3);

if (read == -1) {

return charset; //文件编码为 ANSI

} else if (first3Bytes[0] == (byte) 0xFF

&& first3Bytes[1] == (byte) 0xFE) {

charset = "UTF-16LE"; //文件编码为 Unicode

checked = true;

} else if (first3Bytes[0] == (byte) 0xFE

&& first3Bytes[1] == (byte) 0xFF) {

charset = "UTF-16BE"; //文件编码为 Unicode big endian

checked = true;

} else if (first3Bytes[0] == (byte) 0xEF

&& first3Bytes[1] == (byte) 0xBB

&& first3Bytes[2] == (byte) 0xBF) {

charset = "UTF-8"; //文件编码为 UTF-8

checked = true;

}

bis.reset();

if (!checked) {

int loc = 0;

while ((read = bis.read()) != -1) {

loc++;

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;

}

}

}

bis.close();

} catch (Exception e) {

e.printStackTrace();

}

return charset;

}

java写入文件编码格式为ansi_java 获取文本文件编码格式相关推荐

  1. java写入文件编码格式为ansi_Java读取、写入文件如何解决乱码问题

    读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. 文本文件是基于字符编码的文件,常 ...

  2. java写入文件不覆盖写入_Java写入文件–用Java写入文件的4种方法

    java写入文件不覆盖写入 Java provides several ways to write to file. We can use FileWriter, BufferedWriter, ja ...

  3. java文件写入不覆盖_java写入文件不覆盖写入_Java写入文件–用Java写入文件的4种方法...

    java写入文件不覆盖写入 Java provides several ways to write to file. We can use FileWriter, BufferedWriter, ja ...

  4. 获取文件编码格式 java_java实现获取文本文件的字符编码

    一.认识字符编码: 1.Java中String的默认编码为UTF-8,可以使用以下语句获取:Charset.defaultCharset(); 2.Windows操作系统下,文本文件的默认编码为ANS ...

  5. 如何创建文件并用Java写入文件?

    用Java创建和写入(文本)文件的最简单方法是什么? #1楼 这是一个用于创建或覆盖文件的小示例程序. 它是长版本,因此更容易理解. import java.io.BufferedWriter; im ...

  6. java写入文件的几种方法分享

    转自:http://www.jb51.net/article/47062.htm 一,FileWritter写入文件 FileWritter, 字符流写入字符到文件.默认情况下,它会使用新的内容取代所 ...

  7. java写入文件中文乱码问题_解决Java写入UTF-8文件中文乱码问题

    最近需要从Java中输出UTF-8编码的XML文件,遇到了两次中文乱码问题.一是奇数个汉字出现乱码,二是写入文件的实际编码与XML声明的编码不符.经过几番折腾,终于解决这两个问题,也对Java的字符编 ...

  8. java写入文件几种方法

    在java中我常用的向文件中写入新内容的三种方法,分别是FileWritter,BufferedWriter ,FileOutputStream下面我分别给各位介绍三个实例希望对你有所帮助. 一,Fi ...

  9. java 写入文件流_Java实现文件写入——IO流

    输入输出的重要性: 输入和输出功能是Java对程序处理数据能力的提高,Java以流的形式处理数据.流是一组有序的数据序列,根据操作的类型,分为输入流和输出流. 程序从输入流读取数据,向输出流写入数据. ...

  10. java写入文件中文_java 写入txt文件的中文乱码問題

    读取文件的时候如果是用的read方法(字节流),碰到中文输出就是乱码,然后存储的时候设置下编码为GBK或者是UTF-8形式即可,可以有效的解决乱码问题. 可以通过BufferedReader 流的形式 ...

最新文章

  1. 浅谈高性能数据库集群——读写分离
  2. 解决方案 | office导出为pdf并加密
  3. linux虚拟机克隆
  4. APR分析-共享内存篇
  5. html个版本间的特点,了解下什么是HTML5,他与以往的版本有什么区别 什么新元素...
  6. Vue项目代码改进(五)—— 将侧边栏菜单改造为动态后,如何按需显示不同图标
  7. ubuntu14安装python_ubuntu14.04 安装python3.7
  8. C++ 函数参数的默认值和占位参数
  9. PHP 会话 线程 进程,php进程后台调用(多线程/进程)
  10. docker1.13.1的安装与卸载及mysql5.5安装实例
  11. byte类型和char类型
  12. JS判断浏览器类型与版本
  13. python model如何获取分类错误的数据_如何用python获取美股数据?
  14. 大气压力换算公式_常用压力单位换算表
  15. 荐书 | 9本心理治疗书籍推荐
  16. b站python弹幕签到_一个python脚本就可以B站查找弹幕发送者!
  17. 计划bom表 java_ERP总结系列(BOM浅谈)
  18. 矩阵计算在计算机科学中,开发者必读:计算机科学中的线性代数
  19. java and运算_JAVA中逻辑运算符“|”和“”与“||”和“”的用法
  20. 六、Docker安装Redis

热门文章

  1. 基于Systemview的巴克码识别器设计
  2. 运行QT打包后的程序出现d:\Program Files (x86)\SogouInput\...错误
  3. Dataway接口配置服务,去掉后台,从此告别Controller、Service、Mapping
  4. MathType | 一款强大的公式编辑器
  5. spring session过期时间设置
  6. SAE J1939 协议源代码分析(一)-程序结构框架
  7. 在线解析下载微软官方商店离线安装包
  8. 3-5 掘金小册学习第二弹
  9. AD10操作技巧及参数
  10. 黑客入侵Windows XP的几个常用方法