Solution of Chinese scrambling in UTF-8 file read by Java BufferedReader
Java 解決BufferedReader读取UTF-8文件中文乱码
读取包含中文txt文件乱码:
1 |
BufferedReader reader = new BufferedReader(new FileReader(new File(file))); |
解决办法:
1 2 3 |
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8"); BufferedReader read = new BufferedReader(isr); |
如果不确定文件的编码,可以使用以下方法获取文件编码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
/** * 根据文件头获取文件的编码信息 * * @param file * @throws Exception */ public static String getFileEncoding(String file) throws IOException, FileNotFoundException { BufferedInputStream bin = new BufferedInputStream(new FileInputStream(file)); int p = (bin.read() << 8) + bin.read(); bin.close(); String encoding = null; switch (p) { case 0xefbb: encoding = "UTF-8"; break; case 0xfffe: encoding = "Unicode"; break; case 0xfeff: encoding = "UTF-16BE"; break; default: encoding = "GBK"; } return encoding; } |
No Comments