我使用 windows-1251 编码
打开文本文件 FileInputStream is = new FileInputStream(path);
BufferedReader br = new BufferedReader(new InputStreamReader(is,
"windows-1251"));
然后写下这些更改:
RandomAccessFile file = new RandomAccessFile(new File(path), "rw");
try {
file.write(etMainView.getText().toString().getBytes());
file.close();
Toast.makeText(this, "Changes saved", Toast.LENGTH_SHORT)
.show();
//..... Exception handling
问题在于它弄乱了文件中的所有非拉丁字母,当我再次打开它时,所有这些字母都被一些不可读的字符所取代。我猜RandomAccessFile
默认使用UTF-8,这会引起麻烦。如何保存文件,保持我用来打开它的编码?
答案 0 :(得分:3)
使用.getBytes("windows-1251")
代替.getBytes()
; .getBytes()
使用默认的JVM编码。
答案 1 :(得分:1)
如果您想使用流apis,可以这样做
RandomAccessFile file = ....;
FileChannel fc = file.getChannel();
OutputStream os = Channels.newOutputStream(fc);
OutputStreamWriter osw = new OutputStreamWriter(os, "windows-1251");
osw.write("Some sring");
osw.flush();
file.close();