InputStream inputStream = new FileInputStream(file); byte[] head = new byte[3]; inputStream.read(head); String code = "gb2312"; if (head[0] == -1 && head[1] == -2) code = "UTF-16"; if (head[0] == -2 && head[1] == -1) code = "Unicode"; if (head[0] == -17 && head[1] == -69 && head[2] == -65) code = "UTF-8"; InputStreamReader isr = new InputStreamReader(inputStream, code); BufferedReader buffer = new BufferedReader(isr);