我使用字符串代碼頁爲1250的文本文件。我想將文本保存到RandomAccessFile中。當我從RandomAccessFile中讀取字節時,我得到了具有不同字符的字符串。一些解決方案...如何將代碼頁1250中的字符串保存到java中的RandomAccessFile中
2
A
回答
2
如果您使用的是writeUTF()
,那麼您應該閱讀它的JavaDoc以瞭解它總是寫入modified UTF-8。
如果您想使用其他編碼,那麼您必須「手動」執行編碼,並以某種方式存儲byte[]
的長度。
例如:
RandomAccessFile raf = ...;
String writeThis = ...;
byte[] cp1250Data = writeThis.getBytes("cp1250");
raf.writeInt(cp1250Data.length);
raf.write(cp1250Data);
閱讀將同樣的工作:
RandomAccessFile raf = ...;
int length = raf.readInt();
byte[] cp1250Data = new byte[length];
raf.readFully(cp1250Data);
String string = new String(cp1250Data, "cp1250");
0
此代碼將使用1250的代碼頁寫和讀的字符串。當然,你需要進行清潔時,投入督促之前好好檢查異常和關閉流:)
public static void main(String[] args) throws Exception {
File file = new File("/toto.txt");
String myString="This is a test";
OutputStreamWriter w = new OutputStreamWriter(new FileOutputStream(file), Charset.forName("windows-1250"));
w.write(myString);
w.flush();
CharBuffer b = CharBuffer.allocate((int)file.length());
new InputStreamReader(new FileInputStream(file), Charset.forName("windows-1250")).read(b);
System.out.println(b.toString());
}
相關問題
- 1. 如何將matlab源代碼保存到matlab中的字符串?
- 2. 如何使用此代碼在RandomAccessFile中搜索字符串?
- 3. 檢查字符串是否符合代碼頁1250
- 4. 將字符串保存到Java中的文本文件中
- 5. Javascript字符串編碼Windows-1250到UTF8
- 6. 將網頁源代碼下載到Perl中的字符串中
- 7. 將XML代碼保存爲PHP中的字符串
- 8. 如何解析存儲在字符串中的Java代碼
- 9. 如何將在Windows-1250/Cp1250中編碼的字符串轉換爲utf-8?
- 10. 如何將在windows-1250中編碼的字符串轉換爲unicode?
- 11. 如何將文件保存爲Java中的字符串數組?
- 12. 如何將此令牌保存爲Java中的字符串值?
- 13. 如何將UTF8字符串轉換爲PHP中的代碼頁?
- 14. 將字符串保存到列表中
- 15. 如何在Java和Arduino IDE中的字符串中保存/ *?
- 16. 如何將java varibales傳遞給html頁面代碼(在java字符串中)?
- 17. 如何將日誌消息保存到android中的字符串?
- 18. 如何將JavaScript中的字符串值轉換爲代碼中的字符串?
- 19. 如何迭代Java中的字符串?
- 20. 如何在java中將大字符串保存爲xml文件?
- 21. 如何將文件中的字符串保存到bash中的變量中
- 22. 如何將對象保存到字符串字典中?
- 23. 如何phpexplode字符串中的代碼?
- 24. 如何使用Java將數據保存到MongoDB的字符串中?
- 25. 如何將HTML代碼作爲字符串在HTML頁面中?
- 26. 如何將JavaScript代碼放入java字符串變量中
- 27. 如何在保存文件的字符串中的Java
- 28. 如何將某個字符串中的某些字詞保存到變量中?
- 29. 將方法中的字符串和字符串[]保存到poll [] []中
- 30. 如何將java代碼中的「>」字符串發送到服務器
我得到?ÄŐđŔ×U代替ČŽŠĐčžšđ的。 'byte [] name = new byte [NAME_LEN]; len = raf.read(name); System.out.println(「Name:」+ new String(name,「cp1250」));' – Gogoo 2011-05-31 10:29:54
@Gogoo:你沒有使用我發佈的代碼。 – 2011-05-31 10:37:20
@Gogoo:那麼這表明該文件不在您認爲的編碼中。文件從哪裏來?您是如何瞭解其編碼的? – 2011-05-31 10:44:12