java写入文件编码格式为ansi_java 获取文本文件编码格式
最近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 获取文本文件编码格式相关推荐
- java写入文件编码格式为ansi_Java读取、写入文件如何解决乱码问题
读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. 文本文件是基于字符编码的文件,常 ...
- java写入文件不覆盖写入_Java写入文件–用Java写入文件的4种方法
java写入文件不覆盖写入 Java provides several ways to write to file. We can use FileWriter, BufferedWriter, ja ...
- java文件写入不覆盖_java写入文件不覆盖写入_Java写入文件–用Java写入文件的4种方法...
java写入文件不覆盖写入 Java provides several ways to write to file. We can use FileWriter, BufferedWriter, ja ...
- 获取文件编码格式 java_java实现获取文本文件的字符编码
一.认识字符编码: 1.Java中String的默认编码为UTF-8,可以使用以下语句获取:Charset.defaultCharset(); 2.Windows操作系统下,文本文件的默认编码为ANS ...
- 如何创建文件并用Java写入文件?
用Java创建和写入(文本)文件的最简单方法是什么? #1楼 这是一个用于创建或覆盖文件的小示例程序. 它是长版本,因此更容易理解. import java.io.BufferedWriter; im ...
- java写入文件的几种方法分享
转自:http://www.jb51.net/article/47062.htm 一,FileWritter写入文件 FileWritter, 字符流写入字符到文件.默认情况下,它会使用新的内容取代所 ...
- java写入文件中文乱码问题_解决Java写入UTF-8文件中文乱码问题
最近需要从Java中输出UTF-8编码的XML文件,遇到了两次中文乱码问题.一是奇数个汉字出现乱码,二是写入文件的实际编码与XML声明的编码不符.经过几番折腾,终于解决这两个问题,也对Java的字符编 ...
- java写入文件几种方法
在java中我常用的向文件中写入新内容的三种方法,分别是FileWritter,BufferedWriter ,FileOutputStream下面我分别给各位介绍三个实例希望对你有所帮助. 一,Fi ...
- java 写入文件流_Java实现文件写入——IO流
输入输出的重要性: 输入和输出功能是Java对程序处理数据能力的提高,Java以流的形式处理数据.流是一组有序的数据序列,根据操作的类型,分为输入流和输出流. 程序从输入流读取数据,向输出流写入数据. ...
- java写入文件中文_java 写入txt文件的中文乱码問題
读取文件的时候如果是用的read方法(字节流),碰到中文输出就是乱码,然后存储的时候设置下编码为GBK或者是UTF-8形式即可,可以有效的解决乱码问题. 可以通过BufferedReader 流的形式 ...
最新文章
- 浅谈高性能数据库集群——读写分离
- 解决方案 | office导出为pdf并加密
- linux虚拟机克隆
- APR分析-共享内存篇
- html个版本间的特点,了解下什么是HTML5,他与以往的版本有什么区别 什么新元素...
- Vue项目代码改进(五)—— 将侧边栏菜单改造为动态后,如何按需显示不同图标
- ubuntu14安装python_ubuntu14.04 安装python3.7
- C++ 函数参数的默认值和占位参数
- PHP 会话 线程 进程,php进程后台调用(多线程/进程)
- docker1.13.1的安装与卸载及mysql5.5安装实例
- byte类型和char类型
- JS判断浏览器类型与版本
- python model如何获取分类错误的数据_如何用python获取美股数据?
- 大气压力换算公式_常用压力单位换算表
- 荐书 | 9本心理治疗书籍推荐
- b站python弹幕签到_一个python脚本就可以B站查找弹幕发送者!
- 计划bom表 java_ERP总结系列(BOM浅谈)
- 矩阵计算在计算机科学中,开发者必读:计算机科学中的线性代数
- java and运算_JAVA中逻辑运算符“|”和“”与“||”和“”的用法
- 六、Docker安装Redis
热门文章
- 基于Systemview的巴克码识别器设计
- 运行QT打包后的程序出现d:\Program Files (x86)\SogouInput\...错误
- Dataway接口配置服务,去掉后台,从此告别Controller、Service、Mapping
- MathType | 一款强大的公式编辑器
- spring session过期时间设置
- SAE J1939 协议源代码分析(一)-程序结构框架
- 在线解析下载微软官方商店离线安装包
- 3-5 掘金小册学习第二弹
- AD10操作技巧及参数
- 黑客入侵Windows XP的几个常用方法