從文本文件讀取時,類DataInputStream是錯誤的。正如文檔所述,類DataInputStream用於從底層輸入流中讀取原始Java數據類型,而readUTF()使用某種修改的UTF-8格式(不是標准的UTF-8格式)。
要從文本文件中讀取,您應該使用Reader。java.io中存在的各種Reader類(例如BufferedReader,InputStreamReader,FileReader等)負責使用字符編碼將數據從輸入流轉換為文本。
解決方案一:
File file = new File("C:\\MyFile.txt"); fis = new FileInputStream(file); isr = new InputStreamReader(fis, "UTF-8"); br = new BufferedReader(isr); String line; while ((line = br.readLine()) != null) { System.out.println(line); }
解決方案二:
使用:
new String(file.readLine().getBytes("ISO-8859-1"),"utf-8");
替代readUTF()來獲取文本中的中文。