我有一個文本文件,中文文字寫入一行。該行被"\r\n"
包圍,並使用fileOutputStream.write(string.getBytes())
編寫。Java中的readline()不能正確處理中文字符
我沒有任何問題閱讀英文單詞的行,我的緩衝讀者完全用readLine()
解析它。但是,它將中文句子視爲多行,從而搞砸了我的程序流程。
任何解決方案?
我有一個文本文件,中文文字寫入一行。該行被"\r\n"
包圍,並使用fileOutputStream.write(string.getBytes())
編寫。Java中的readline()不能正確處理中文字符
我沒有任何問題閱讀英文單詞的行,我的緩衝讀者完全用readLine()
解析它。但是,它將中文句子視爲多行,從而搞砸了我的程序流程。
任何解決方案?
使用string.getBytes()
使用平臺默認編碼編碼String
。這很少是你想要的,特別是當你試圖編寫非當前語言環境的本地字符時。
請指定編碼(例如使用string.getBytes("UTF-8")
)。
一個更清潔,更多的Java式的方式將是在OutputStreamWriter
這樣來包裝你OutputStream
:
Writer w = new OutputStreamWriter(out, "UTF-8");
然後你可以簡單地調用writer.write(string)
,並不需要你想每次都重複編碼寫一個String
。
而且,如下所述,讀取文件時指定相同的編碼(最好使用Reader
)。
...並且當然也在構造閱讀器時指定編碼。 – 2011-02-11 09:49:37
如果您通過fileOutputStream.write(string.getBytes())
輸出文本,那麼您輸出的平臺默認編碼爲。重要的是要確保您使用適當的編碼進行閱讀,並使用可識別編碼的方法。這個問題不會出現在你的BufferedReader
實例中,但不管你有什麼Reader
,它都會將字節轉換爲字符。
它將與一些例子輸入和代碼幫助。 – 2011-02-11 09:46:50