我有以下代碼:錯誤寫入ASCII字符到的java /文件機器人
private char[] headerToWrite;
protected String workingFileName;
private void writeHeaderToFile()
{
try
{
String completeFile = new String(headerToWrite);
File myFile = new File(workingFileName);
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append(completeFile);
myOutWriter.close();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
在上面的代碼中,變量headerToWrite包含一個陣列,其中所述第一數值是:[1, Q, H, S, , 4, ±, Q, .....]
。這在十六進制是[31, 51, 48, 53, 01, 34, B1, 51...]
。
它被用來創建一個字符串completeFile其中= 1QHS 4±Q ...
然而,當正被寫入該文件,該文件包含1QHS 4A±Q .....這在十六進制是[31 51 48 53 01 34 c2 b1 51]
....
我不明白爲什麼有一個額外的C2,但我發現裏面myOutWriter分別爲字節如下:[49, 81, 72, 83, 1, 52, -62, -79, 81]
....
有趣的一點是這裏-62, -79
這似乎是對c2, b1
負責。對於它的工作,-62, -79
應該是177
,這是b1的小數。有趣的是177 + 79 256
所以顯然,在從ASCII字符completeFile在myOutWriter轉移到字節,c2
被添加。
我想知道是否有人可以解釋爲什麼以及如何解決它。
由於
非常感謝。爲了完整起見,我更改了OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);到OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut,「ISO-8859-1」); – 2012-07-24 09:32:46