RandomAccessFile怎么解决中文乱码?

hela1 2007-06-12 07:44:16
问题如上.我手动写了一个文件!我要把这个文件读出来!其实夹杂着汉字.
怎么样把汉字正常显示出来/?
...全文
881 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
rf.readUTF()
给你贴个例子吧:
import java.io.*;
public class UsingRandomAccessFile {
static String file = "rtest.dat";
static void display() throws IOException {
RandomAccessFile rf = new RandomAccessFile(file, "r");
for(int i = 0; i < 7; i++)
System.out.println("Value " + i + ": " + rf.readDouble());
System.out.println(rf.readUTF());
System.out.println(rf.readUTF());
rf.close();
}
public static void main(String[] args)throws IOException {
RandomAccessFile rf = new RandomAccessFile(file, "rw");
for(int i = 0; i < 7; i++)
rf.writeDouble(i*1.414);
rf.writeUTF("The end of the file");
rf.writeUTF("你好");
rf.close();
display();
rf = new RandomAccessFile(file, "rw");
rf.seek(5*8);
rf.writeDouble(47.0001);
rf.close();
display();
}
}
小V小V志 2011-07-28
  • 打赏
  • 举报
回复
擦,我也是,有解决的联系。。。
zhangxinlan5 2011-07-08
  • 打赏
  • 举报
回复
顶,我也遇到这个问题
frankwyfeng 2011-06-29
  • 打赏
  • 举报
回复
有解决办法吗?
sliuplin 2011-06-02
  • 打赏
  • 举报
回复
ls 你自己试过吗?看看你的代码.
我按行来也不行啊!
RandomAccessFile raf=new RandomAccessFile("E:\\tt\\STUDENT.txt", "r");
raf.readLine();
读出来中文还是乱码!
eric06s 2007-06-20
  • 打赏
  • 举报
回复
up
fengmingjie 2007-06-20
  • 打赏
  • 举报
回复
不要按字节读取,按行来读取一个文件,应该不会出现乱码的
hfcc999 2007-06-20
  • 打赏
  • 举报
回复
要读取一个文本文件,首先需要知道这个文本文件的字符编码类型,一般如果在保存的时候没有显示指定编码类型,则默认为当前操作系统类型。

由于我们现在大多数使用的编码都是变长编码,如UTF-8、GB2312,在进行编码的时候会将英文字符(ascii)编码为一个字节,而将汉字编码为两个或以上的字节。基于这个原因,在进行文本文件的随机定位(注意:定位一般都是定位从哪个字节开始操作)读取时,很有可能定位的地方是在一个字符编码成的多字节的中间从而导致半个汉字等问题。

为了解决上面说的问题,一般有以下几种方式:
1、采用定长编码,这样可以很简单的避免定位到一个字符的中间。
2、手工编写程序根据字符编码类型判断当前定位是否处于一个字符的中间。
3、实际上常规的需求是这样的,在文本文件中插入一个记录;如果是属于这种情况,则可以将记录设计成为等长字节的或者类似的;如果一个记录没有到指定的长度,则补充不可见字符等使之达到指定长度;如果使用这种方式,在定位时就非常简单,直接根据记录长度*记录序号进行定位即可。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧