writeUTF()使用中乱码的解决方法???
try
{ file=new File("G://java code/jackxu/src","good.txt");
RandomAccessFile out=new RandomAccessFile(file,"rw");
if(f.exists())
{ long length=f.length();
out.seek(length);
}
out.writeUTF("姓名:"+name.getText());
out.writeUTF("email:"+email.getText());
out.writeUTF("电话:"+phone.getText());
out.close();
}
catch(Exception ee){}
上面的是java中使用登陆界面(省略)和 RandomAccessFile的部分代码,当我把从文本框中获取的数据
写入到good.txt,写入的内容能完全显示在good.txt,但是还是存在乱码,writeUTF()是以字符
串的形式写入目的地,这应该没问题啊,这个是怎么回事?当我把写入数据的目的地为good.doc,
word文档什么都没有,这又是怎么回事??
------解决方案--------------------
RandomAccessFile这东西不好用啊~~~~
你一定没仔细看writeUTF方法~~~~~~它的存储格式不是通用格式~~~~~~~
先是用2个byte存储实际写出的字节数,再modified UTF-8 编码以与机器无关的方式将一个字符串写入该文件,注意:我学这个类的时候为了读出之前写入的字符串。。。。。。当时也失败了~~~~~
后来我注意到这个类有个方法getFilePointer()
于是我每调用一次不同的write方法,输出一次偏移量。。。结果发现。。。。。它这个所谓的utf-8编码实际上是3个byte——至少汉字是!
所以,一个字符串在RandomAccessFile中的实际存储长度为(2+3*字数)个byte
你的偏移量搞对了吗?