200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java获取文本文件的编码格式

java获取文本文件的编码格式

时间:2019-07-06 21:38:05

相关推荐

java获取文本文件的编码格式

/*** 获取文件的编码格式* @param file* @return*/public String GetCharset(File file) {String charset = "GBK";byte[] first3Bytes = new byte[3];try {boolean checked = false;//BufferedInputStream bis = new BufferedInputStream(//new FileInputStream(file));//bis.mark(0);//int read = bis.read(first3Bytes, 0, 3);InputStream is = new FileInputStream(file);int read = is.read(first3Bytes, 0, 3);if (read == -1)return charset;//Log.i(TAG,"[GetCharset]first3Bytes[0]:"+first3Bytes[0]+", first3Bytes[1]:"+first3Bytes[1]+",first3Bytes[2]:"+first3Bytes[2]);if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) {charset = "UTF-16LE";checked = true;} else if (first3Bytes[0] == (byte) 0xFE&& first3Bytes[1] == (byte) 0xFF) {charset = "UTF-16BE";checked = true;} else if (first3Bytes[0] == (byte) 0xEF&& first3Bytes[1] == (byte) 0xBB&& first3Bytes[2] == (byte) 0xBF) {charset = "UTF-8";checked = true;}else if (first3Bytes[0] == (byte) 0xA&& first3Bytes[1] == (byte) 0x5B&& first3Bytes[2] == (byte) 0x30) {charset = "UTF-8";checked = true;}else if (first3Bytes[0] == (byte) 0xD&& first3Bytes[1] == (byte) 0xA&& first3Bytes[2] == (byte) 0x5B) {charset = "GBK";checked = true;}else if (first3Bytes[0] == (byte) 0x5B&& first3Bytes[1] == (byte) 0x54&& first3Bytes[2] == (byte) 0x49) {charset = "windows-1251";checked = true;}//bis.reset();InputStream istmp = new FileInputStream(file);if (!checked) {int loc = 0;while ((read = istmp.read()) != -1) {loc++;if (read >= 0xF0)break;if (0x80 <= read && read <= 0xBF)break;if (0xC0 <= read && read <= 0xDF) {read = istmp.read();if (0x80 <= read && read <= 0xBF)continue;elsebreak;} else if (0xE0 <= read && read <= 0xEF) {read = istmp.read();if (0x80 <= read && read <= 0xBF) {read = istmp.read();if (0x80 <= read && read <= 0xBF) {charset = "UTF-8";break;} elsebreak;} elsebreak;}}}is.close();istmp.close();} catch (Exception e) {e.printStackTrace();}return charset;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。