解决方案 »
- java小程序
- writeChars()方法向记事本中写入的字符串为什么会乱码?
- 大家知道怎么通过超连接传递参数传%,不能用POST方式
- -=小女子高分求购JAVA新手学习计划流程书=-
- 有没有一个Listener可以监视JTextField中字符的变化?
- ***求助:用fpt文件传输协议,如何实现在局域中的文件传送??***
- 如何在applet中定义和调用多线程?
- 请教scjd(非scjp)考试经验!!!
- 一个多月没哟来啦!
- JAVA利用SOCKET实现的客户端和服务端之间的通讯问题
- xp系统下, 已经关联了javaw.exe 和 jar, 为什么打不开?
- 关于httpclient模拟post的问题
没有写入文件,就是把对象写入字符串,然后再从字符串中读取出来。测试代码:
public class SerializeDemo {
private static void testPerson(Person p){
String str = SerializableTool.serialzeToString(p);
Person p2 = (Person)SerializableTool.derialzeFromString(str);
} public static void main(String[] args) {
Person me = new Person(2,"abcd我1234",Gender.Male);
testPerson(me);
}
}import java.io.Serializable;public class Person implements Serializable {
private static final long serialVersionUID = 1L; public enum Gender{
Male, Femal;
} private int id;
private String name;
private Gender gender;
public Person(){}
public Person(int id,String name,Gender gender){
this.id = id;
this.name = name;
this.gender = gender;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
}
不是。因为GBK和UTF-8都是大字符集(多byte才构成一个char),编码都是有对照关系的。比如你的byte恰好出现 [255][255],那么根本从GBK中根本找不到一个汉字的字节码是[255][255],必然完蛋。但ISO-8859-1是单字符集(一个byte就是一个char),所以从[0]~[255]都能找到对应的字符(char)。楼主,一般来说如果是文件操作或者是网络传输,根本不会转换为String,直接把byte[]数组完整写进文件就完了。如果你实在是非常非常希望能变成String,那么就BASE64编码,这才是国际通用做法。
可以直接用 blob 类型,反正无论存进去的是String还是二进制还是BASE64后的东西,你肉眼都看不懂。