真的很簡單的問題。我需要在Java程序中讀取一個Unicode文本文件。用java讀取unicode文本文件
我習慣使用ASCII純文本與一個BufferedReader的FileReader組合這顯然是不工作:(
我知道我可以使用緩衝Reader讀取的在「傳統」的方式字符串然後將其轉換使用類似:
temp = new String(temp.getBytes(), "UTF-16");
但是,有沒有辦法來包裝讀者一個「轉換器」
編輯:?文件開始與FF FE
真的很簡單的問題。我需要在Java程序中讀取一個Unicode文本文件。用java讀取unicode文本文件
我習慣使用ASCII純文本與一個BufferedReader的FileReader組合這顯然是不工作:(
我知道我可以使用緩衝Reader讀取的在「傳統」的方式字符串然後將其轉換使用類似:
temp = new String(temp.getBytes(), "UTF-16");
但是,有沒有辦法來包裝讀者一個「轉換器」
編輯:?文件開始與FF FE
你不會換的讀者,而不是你想包使用一個InputStreamReader流。 然後,您可以換與你的BufferedReader您當前使用的
BufferedReader in = new BufferedReader(new InputStreamReader(stream, encoding));
檢查http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStreamReader.html
我會讀源文件的東西,如:
Reader in = new InputStreamReader(new FileInputStream("file"), "UTF-8"));
一些注意事項:
Scanner scan = new Scanner(new File("C:\\Users\\daniel\\Desktop\\Corpus.txt"));
while(scan.hasNext()){
System.out.println(scan.nextLine());
}
我會建議使用UnicodeReader從谷歌數據API,看到this answer了類似的問題。它會自動檢測來自字節順序標記(BOM)的編碼。
您也可以考慮Apache Commons IO中的BOMInputStream,它基本上相同但不包含所有備選版本的BOM。
我想讀希伯來文字母,我會用「編碼」來代替什麼? – CodyBugstein 2013-10-30 16:12:36
回答我自己的問題,它是「UTF-8」 – CodyBugstein 2013-10-30 16:15:37
'構造函數BufferedReader(InputStreamReader)是未定義'? – Squareoot 2016-12-15 15:29:47