使用1.7 Files,实现编码探测

Posted blouson

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用1.7 Files,实现编码探测相关的知识,希望对你有一定的参考价值。

原理:Files.newBufferedReader(Path path, Charset charset)没有实现编码容错

遍历所有的字符集,读取文件,如果不报MalformedInputException,即可认为编码格式正确。

代码如下:

 1 public class CharsetTest 
 2     public static final Path path = Paths.get("");
 3 
 4     public static void main(String[] args) 
 5         Map<String, Charset> map = Charset.availableCharsets();
 6         List<Charset> retval = map.values().stream().filter(CharsetTest::testCharset).collect(Collectors.toList());
 7     
 8 
 9     private static boolean testCharset(Charset charset) 
10         BufferedReader br;
11         try 
12             br = Files.newBufferedReader(path, charset);
13          catch (IOException e) 
14             System.out.println("Read file error!");
15             return false;
16         
17 
18         try 
19             while (br.readLine() != null) 
20 
21             
22          catch (MalformedInputException e) 
23             System.out.println("MalformedInputException");
24             return false;
25          catch (IOException e) 
26             System.out.println("IOException happens!");
27             return false;
28         
29 
30         return true;
31     
32 

 

以上是关于使用1.7 Files,实现编码探测的主要内容,如果未能解决你的问题,请参考以下文章

使用 sklearn load_files 进行解码/编码

Web信息安全实践_1.7 OpenSSL

AC日记——行程长度编码 openjudge 1.7 32

ATMega32 微控制器编码使用哪个 IDE

中文编码字符集新国标发布 新增1.7万余个生僻汉字

中文编码字符集新国标发布 新增1.7万余个生僻汉字