黑马程序员技术交流社区

标题: 为什么显示的是乱码? [打印本页]

作者: 三生石    时间: 2014-3-1 18:40
标题: 为什么显示的是乱码?
程序如下:
import java.io.*;
class Person implements Serializable
{
        private String name;
        private int age;
        public Person(String name,int age)
        {
                this.name=name;
                this.age=age;
        }
        public void print()
        {
                System.out.println("姓名:"+name+"/n年龄:"+age);
        }
}
class ObjectOutputTest
{
        public static void main(String[] args)throws Exception
        {
                Person p=new Person("三生石",23);
                FileOutputStream fos=new FileOutputStream("d:\\person.txt");
                ObjectOutputStream oos=new ObjectOutputStream(fos);
                oos.writeObject(p);
                fos.close();
                oos.close();
        }
}

运行结果:

为什么是乱码呢?

作者: 平凡成就非凡    时间: 2014-3-1 18:49
这不是乱码吧,只不过是数据经过啦系统默认的编码表,而生成的。是把你存储的数据查表后的结果。
作者: Backing    时间: 2014-3-1 19:03
你打开的是".class"文件吧,person.class文件用记事本是打不开的,是给java虚拟机阅读的。
作者: 位俊鹏    时间: 2014-3-1 19:07
你用的是字节输出流,,一个中文代表两个字节,而当你用字节流输出时它会逐个字节进行输出,就会导致乱码.你改一下用字符流试试.

作者: volvoxc    时间: 2014-3-1 19:31
这个是对象的序列化,是需要在硬盘上存储对象时用的。出现乱码是因为记事本使用默认的字符集对字节进行查表的结果。这个内容不是给我们看的,如果想知道对象的内容,可以用ObjectInputStream中的readObject进行读取。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2