RandomAccessFile怎么解决中文乱码? 问题如上.我手动写了一个文件!我要把这个文件读出来!其实夹杂着汉字.怎么样把汉字正常显示出来/? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要读取一个文本文件,首先需要知道这个文本文件的字符编码类型,一般如果在保存的时候没有显示指定编码类型,则默认为当前操作系统类型。由于我们现在大多数使用的编码都是变长编码,如UTF-8、GB2312,在进行编码的时候会将英文字符(ascii)编码为一个字节,而将汉字编码为两个或以上的字节。基于这个原因,在进行文本文件的随机定位(注意:定位一般都是定位从哪个字节开始操作)读取时,很有可能定位的地方是在一个字符编码成的多字节的中间从而导致半个汉字等问题。为了解决上面说的问题,一般有以下几种方式:1、采用定长编码,这样可以很简单的避免定位到一个字符的中间。2、手工编写程序根据字符编码类型判断当前定位是否处于一个字符的中间。3、实际上常规的需求是这样的,在文本文件中插入一个记录;如果是属于这种情况,则可以将记录设计成为等长字节的或者类似的;如果一个记录没有到指定的长度,则补充不可见字符等使之达到指定长度;如果使用这种方式,在定位时就非常简单,直接根据记录长度*记录序号进行定位即可。 ls 你自己试过吗?看看你的代码.我按行来也不行啊!RandomAccessFile raf=new RandomAccessFile("E:\\tt\\STUDENT.txt", "r"); raf.readLine(); 读出来中文还是乱码! 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();}} JTextArea中,等宽字符的表示问题 java jdk自带的例子中有记事本的完整例子? think in java 第四版错误 log4j 写入数据库 jbuilder 2007安装之前是不是需要安装JDK的? 关于set的用处和用法 求教高手JCreator显示乱码的问题??? 请教各位高手:如何在JAVA中把十进制数转换成二进制数??? 初学JAVA想写一个时钟。。不会。。 Java开发者:Eclipse的使用简介及插件开发 到哪里下载log4j 如何解决FTP连接超时问题?
1、采用定长编码,这样可以很简单的避免定位到一个字符的中间。
2、手工编写程序根据字符编码类型判断当前定位是否处于一个字符的中间。
3、实际上常规的需求是这样的,在文本文件中插入一个记录;如果是属于这种情况,则可以将记录设计成为等长字节的或者类似的;如果一个记录没有到指定的长度,则补充不可见字符等使之达到指定长度;如果使用这种方式,在定位时就非常简单,直接根据记录长度*记录序号进行定位即可。
我按行来也不行啊!
RandomAccessFile raf=new RandomAccessFile("E:\\tt\\STUDENT.txt", "r");
raf.readLine();
读出来中文还是乱码!
给你贴个例子吧:
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();
}
}