第一步:首先判断源文件的编码格式:

按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。其实,如果项目运行的平台就是中文操作系统,如果这些文本文件在项目内产生,即开发人员可以控制文本的编码格式,只要判定两种常见的编码就可以了:GBK和UTF-8。由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式。
   对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下:
              File file = new File(path);
InputStream in= new java.io.FileInputStream(file);
byte[] b = new byte[3];
in.read(b);
in.close();
if (b[0] == -17 && b[1] == -69 && b[2] == -65)
System.out.println(file.getName() + ":编码为UTF-8");
else
System.out.println(file.getName() + ":可能是GBK,也可能是其他编码");

第二步:用指定的编码格式读取文件流

[java] view plaincopy

 
  1. private static String forTest(String file) throws IOException {
  2. File f = new File(file);
  3. InputStreamReader read = new InputStreamReader(new FileInputStream(f),
  4. "编码格式");
  5. BufferedReader reader = new BufferedReader(read);
  6. String line;
  7. String s = "";
  8. while ((line = reader.readLine()) != null) {
  9. s = s+line;
  10. }
  11. return s;
  12. }

总结:就是采用如下的方式:

            File file = new File("D:\\Myeclipse\\Ini\\config.properties");
FileInputStream in = new FileInputStream(file);
byte[] b = new byte[3];
in.read(b);
String code = "GBK";
if (b[0] == -17 && b[1] == -69 && b[2] == -65){
code = "UTF-8";
} InputStreamReader inputStreamReader = new InputStreamReader(in,code);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = bufferedReader.readLine();
String data = "";
while(str != null){
data = data + str+"\r\n";
str = bufferedReader.readLine();
}
in.close();
bufferedReader.close();
System.out.println(code);
System.out.println(data);

Java 读取ANSI文件中文乱码问题解决方式[转]的更多相关文章

  1. .net读取xml文件中文乱码问题解决

    读取XML的编码方式Encoding.UTF8 要和<?xml version="1.0" encoding="utf-8"?>的encoding ...

  2. 【其他】【navicat】【1】navicat导入txt文件中文乱码问题解决

    正文: TXT文件默认编码为ANSI,另存为编码为UTF-8的文本文件即可 备注: 1,一般需要导入的数据都是一张excel表,需要将excel表另存为“文本文件(制表符分隔)(*.txt)”保存类型 ...

  3. 解決BufferedReader读取UTF-8文件中文乱码

    解決BufferedReader读取UTF-8文件中文乱码         File rst01 = new File(context.getRealPath("/")+" ...

  4. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  5. Python读取 csv文件中文乱码处理

    需求:按行解析读取csv文件存入关系型数据库——主要是中文字体解析:遇到的问题:直接解析出来的数据为list形式,而且编码格式为unicode;解决问题:前提了解: 中文编码的规则 —— GB2312 ...

  6. Java 读取 .properties 文件的几种方式

    Java 读取 .properties 配置文件的几种方式   Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 ...

  7. Java使用ResourceBundle类读取properties文件中文乱码的解决方案

    Java使用java.util.ResourceBundle类的方式来读取properties文件时不支持中文,要想支持中文必须将文件设置为ISO-8859-1编码格式,这对于开发工具默认为UTF-8 ...

  8. java压缩zip文件中文乱码问题(转——作者:riching)

    本人遇到了同样的问题,用了以下方案,奇迹般的解决了.我很纳闷为什么,经理说:好读书,不求甚解,不要问为什么... 用java来打包文件生成压缩文件,有两个地方会出现乱码 1.内容的中文乱码问题,这个问 ...

  9. java压缩zip文件中文乱码问题

    用java来打包文件生成压缩文件,有两个地方会出现乱码 1.内容的中文乱码问题,这个问题网上很多人给出了解决方法,两种:修改sun的源码:使用开源的类库org.apache.tools.zip.Zip ...

随机推荐

  1. Loadrunner的参数化解析

    参数化的用法 例如 1.登录一个网站,我们可以有很多的不同的用户名和密码 2.创建客户时我们可以通过参数化使得客户编号,客户名称使用多种组合 等等.. 那么下面就为大家介绍参数化的用法 参数化有2种 ...

  2. JSON Web Token(JWT)机制

    JSON Web Token(JWT)机制  JWT是一种紧凑且自包含的,用于在多方传递JSON对象的技术.传递的数据可以使用数字签名增加其安全行.可以使用HMAC加密算法或RSA公钥/私钥加密方式. ...

  3. 转载一篇关于toString和valueOf

    可以这样说,所有JS数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题.在程序应用非常广泛.下面我们逐一来给大家介绍下. Java ...

  4. web中ajax跨域与同源文章 from 阮一峰

    跨域资源共享 CORS 详解 http://www.ruanyifeng.com/blog/2016/04/cors.html  //这个是最明白的..建议看看. http://www.ruanyif ...

  5. [Canvas]空战游戏进阶 增加发射子弹 敌机中弹爆炸功能

    点此下载源码. 图例: 源码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv=" ...

  6. O_DIRECT与O_SYNC区别(转)

    O_DIRECT和O_SYNC是系统调用open的flag参数.通过指定open的flag参数,以特定的文件描述符打开某一文件. 这两个flag会对写盘的性能有很大的影响,因此对这两个flag做一些详 ...

  7. SSL证书问题汇总

     //SLL协议分析 注意:对SSL协议的功能 https://www.myssl.cn/tools/check-server-cert.html //SSL证书格式转换 https://www.it ...

  8. Dockerfile 构建kibana 反向代理应用做用户认证访问

    FROM centos MAINTAINER z*****ch.cn RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime & ...

  9. 【C#】C#中的属性与字段

    目录结构: contents structure [+] 属性和字段的区别 无参属性 自动实现的属性 对象和集合初始化器 匿名类型 System.Tuple类型 有参属性 属性的可访问性 在这篇文章中 ...

  10. KeyTool 和 OpenSSL 相互转换 [转]

    REM 生成自签名 CA 证书 REM Win32 OpenSSL REM http://slproweb.com/products/Win32OpenSSL.html REM How to crea ...