当前位置: 代码迷 >> Java相关 >> [求助]为何会是乱码?!!
  详细解决方案

[求助]为何会是乱码?!!

热度:238   发布时间:2006-05-28 14:26:00.0
[求助]为何会是乱码?!!
我编了一个图书类,并把图书几本书的资料用串行化方式写入了指定的文件e:/book.txt,跟着再从文件中读出图书的资料,但是发现写入book。txt的内容全是乱码,但是读出的却不是乱码,为何会这样啊~~~~~~~~

import java.io.*;

import java.util.*;

class book implements Serializable

{

public String name;

public String author;

public String price;

public String publisher;

public book(String n,String a,String p,String pu)

{

name=n;

author=a;

price=p;

publisher=pu;

}

public String toStirng()

{

return "书名:"+name+"\n"+"作者:"+author+"\n"+"价格:$"+price+"\n"+"出版社:"+publisher+"\n";

}

}

public class Trybook

{

public static void main(String[] args) throws IOException

{

try

{ book[] shu=new book[3];

shu[0]=new book("操作系统","郑扣根","55","高等教育出版社");

shu[1]=new book("面向对象程序设计","叶乃文","33","清华大学出版社");

shu[2]=new book("计算机组成原理","白中英","33","科学出版社");

ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("e:/book.txt"));

out.writeObject(shu);

out.close();

ObjectInputStream in=new ObjectInputStream(new FileInputStream("e:/book.txt"));

book[] newshu=(book[])in.readObject();

for(int i=0;i<newshu.length;i++) System.out.println(newshu[i].toStirng());

}catch(Exception e){

System.out.println("Error:"+e);

System.exit(1);

}

}

}

搜索更多相关的解决方案: 乱码  

----------------解决方案--------------------------------------------------------

因为你写入的是2进制的文件,所以你看到的是乱码.
如果你要想看的到的话用PrintWriter 但是它不能写入对象.


----------------解决方案--------------------------------------------------------

不太象,因为并不全是乱码,还是能显示出一两个正确的单词,特别是把图书的资料由中文表示改为英文表示时~~~~~


----------------解决方案--------------------------------------------------------
这个问题我以前就说过了,这不是乱码而是你的toString方法是继承自Object的
Object中toString的实现是
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
所以你看到的好像是乱码一样
----------------解决方案--------------------------------------------------------
  相关解决方案