2009-09-14 76 views
0

我解析文本(CAL碼)用的BufferedReader和BufferedWriter將在Java中,不幸的是,這是我的紅色和與outStream.write(線)寫道線;已經改變了,請看截圖:的java的BufferedReader,寫不同的東西比它讀取

http://uploadz.eu/images/4qz8mtkm2d9zx3x5ms3n.png ^ h ** P://uploadz.eu/images/c03hgkrgrmit2ij2mug.png

正如你看到的,一些特殊的字符也改變了線路,雖然我不打算改變它們。

據我所知,Bufferedwriter/Reader應該默認使用unicode。

回答

2

BufferedWriterBufferedReader被編碼無關 - 他們從來沒有處理實際的編碼,因爲他們只是緩衝現有讀者和作家。

現在FileWriterFileReader使用默認的系統編碼(urgh)。要解決此問題,通常應使用InputStream/InputStreamReaderOutputStream/OutputStreamWriter對(可能包裝在BufferedReader/BufferedWriter中),並明確指定編碼。

你還沒有說你實際上在讀什麼 - 它是一個文件嗎?你知道文件的編碼嗎?

+0

的BufferedWriter DF =新的BufferedWriter(新OutputStreamWriter( 「out.txt」)); 不起作用。 它是一個.txt文件。不幸的是我不知道文件的編碼。 – dayscott 2009-09-14 19:43:36

+0

我發現:它應該是ANSI。我會欣賞進一步的建議。 – dayscott 2009-09-14 21:29:40

+0

「ANSI」不是單一編碼。它可以表示各種不同的編碼,通常是ASCII的8位擴展。 – 2009-09-14 21:41:20

0

您應該知道的編碼,如果你要處理的內容爲文本(字符串),或者,當複製是你的目標,或者把內容作爲字節數組。

+0

火狐:http://uploadz.eu/images/7anvv8hok4bdt2ewylt1.jpg Java編譯器:「的Cp1252」 我一派認爲「的Cp1252」似乎是Java的「標準」字符集。 – dayscott 2009-09-15 20:37:04

+0

wordStream = new FileInputStream(「x.txt」); \t \t InputStreamReader input = null; \t \t輸入=新java.io.InputStreamReader中(WordStream的 「的Cp1252」); \t \t reader = new BufferedReader(input); \t \t String str; \t \t嘗試{ \t \t \t而(!(STR = reader.readLine())= NULL){ \t \t \t \t的System.out.println(STR); \t \t \t} 不幸的輸出仍然是錯誤的編碼。 – dayscott 2009-09-15 22:07:50

+0

問題解決了! 只需使用RandomAccessFile類。我用readLine和writeBytes。作爲分隔符,我使用System。getProperty(「line.separator」) - 運行Win XP。 thx爲支持球員:) – dayscott 2009-09-20 19:45:20