// 使用之前请调用getAllDetectableCharsets()检查是否满足要求,中文仅有{gb18030, big5,utf-*}
import com.ibm.icu.text.CharsetDetector;
import com.ibm.icu.text.CharsetMatch; static HashSet<String> getWhiteList(String fileName) {
if (fileName == null) {
return null;
}
HashSet<String> rs = null;
InputStreamReader isr = null;
BufferedReader br = null;
try {
FileInputStream fis = new FileInputStream(fileName);
BufferedInputStream bis = new BufferedInputStream(fis);// markSupported
CharsetMatch charsetMatch = new CharsetDetector().setText(bis).detect();
if (charsetMatch != null) {
isr = new InputStreamReader(bis, charsetMatch.getName());
System.out.println("Open '" + fileName + " ' with charset: " + charsetMatch.getName());
} else {
isr = new InputStreamReader(bis);
System.out.println(
"Open '" + fileName + " ' with charset( default, because no charset is detected by IBM.ICU4J): "
+ isr.getEncoding());
}
br = new BufferedReader(isr);
String line = null;
rs = new HashSet<String>();
while ((line = br.readLine()) != null) {
rs.add(line);
}
} catch (FileNotFoundException e) {
System.out.println("WARNING: File '" + fileName + "' is not exist.");
} catch (IOException e) {
System.out.println("WARNING: IOException occured when read Whitelist.");
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
System.out.println("WARNING: IOException occured when close BufferedReader.");
}
}
return rs;
}

Java自动检测文件编码(字符集)的更多相关文章

  1. Java 自动检测文本文件编码

    private String guessCharset(InputStream is) throws IOException { return new TikaEncodingDetector().g ...

  2. php -- php检测文件编码的方法示例

    <?php /** * 检测文件编码 * @param string $file 文件路径 * @return string|null 返回 编码名 或 null */ function det ...

  3. Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器

    一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件处理: if 条件成立: val = 1 else: val = 2 改成三元运算 val = 1 if 条件成立 else ...

  4. java自动探测文件的字符编码

    Mozilla有一个C++版的自动字符集探测算法代码,然后sourceforge上有人将其改成java版的~~ 主页:http://jchardet.sourceforge.net/ jchardet ...

  5. python 检测文件编码等

    参考:http://my.oschina.net/waterbear/blog/149852 chardet模块,能够实现文本编码的检查, 核心代码: import chardet chardet.d ...

  6. [原创]使用java批量修改文件编码(ANSI-->UTF-8)

    从网上下载的项目,有时候.java文件的编码是ANSI.导入到自己的MyEclipse后,查看项目源码的时候,总是乱码. 一个个.java去修改的话, 既麻烦又不现实.所以写了下面这个工具类,进行批量 ...

  7. [转发]读取txt防止读到乱码--自动根据文件编码进行读取

    以下是摘抄 /// <summary> /// 获取文件的编码格式 /// </summary> public class EncodingType { /// <sum ...

  8. 文件编码检测.ZC

    1.今天(20181101) 发现 g文件中的 xml头 和 文件编码不一致,最后发现 貌似是我搞错了,人家的文件 编码方式写的是对的. 我发现的现象是:XML里面写的是"GBK" ...

  9. Python使用chardet包自动检测编码

    chardet:charset detection 一旦自动检测出编码,就可以解码了. 八种文件打开方式 w:一旦打开文件,文件内容就清空了 r:只读方式打开 a:追加方式打开 r+:先读后写 以上四 ...

随机推荐

  1. hbase(待完善)

    1. 应用 <1>  hbase解决海量图片存储 <2>

  2. Python学习第二十一课——Mysql 对数据库的基本操作

    数据库操作(DDL) 在数据库下创建表(create_table) 创建表代码块: CREATE TABLE employee( id TINYINT PRIMARY KEY auto_increme ...

  3. cmake 环境安装与使用

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的 ...

  4. 洛谷 P1119 灾后重建(Floyd)

    嗯... 题目链接:https://www.luogu.org/problem/P1119 这道题是一个Floyd的很好的题目,在Floyd的基础上加一点优化: 中转点k在这里不能暴力枚举,否则会超时 ...

  5. python3 getopt用法

    python channel_builder.py -s /Users/graypn/ -d /Users/graypn/Documents -m 7 --out=report/xx.html 参数也 ...

  6. 「USACO5.5」矩形周长Picture

    题目描述 墙上贴着许多形状相同的海报.照片.它们的边都是水平和垂直的.每个矩形图片可能部分或全部的覆盖了其他图片.所有矩形合并后的边长称为周长. 编写一个程序计算周长. 如图1所示7个矩形. 如图2所 ...

  7. 利用DFS算出有多少个连通图

    以下面一个题目为例,[题目链接]: https://www.luogu.com.cn/problem/P4961 题目中涉及求出八联通图的个数,这里给出这步的代码: memset(vis, 0, si ...

  8. Keras的TimeDistributed层

    Keras的TimeDistributed层主要用途是在时间维度上进行全连接. 比如Faster RCNN,1张图生成了16个ROI,需要对每一个ROI进行分类和回归,ROI的维度是7×7×512,长 ...

  9. mac 终端连接服务器报错

    今天在连接虚拟机服务器时突然报了一个 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!的错误.  会出现这个错误的原因是在第一次进行SSH连接时,会生 ...

  10. twisted 模拟scrapy调度循环

    """模拟scrapy调度循环 """from ori_test import pr_typeimport loggingimport ti ...