日期:2014-05-20  浏览次数:20629 次

请教达人: 关于序列化和Unicode
本帖最后由 cloudeagle_bupt 于 2013-08-20 16:25:53 编辑
 之前有几个问题一直没搞懂。

 1. Java对象在内存中的形式都是unicode编码么? 和存在硬盘上的有区别么?

 2. Java对象序列化后的二进制编码是什么编码呢? 这个可以自己设置么(比如修改成utf-8)?

 3. unicode和utf系列编码的关系,一直没明白,最简单的,内存上和硬盘上存的Java对象的值,是以什么方式存的呢? unicode? utf编码? 还是啥?

  对此一直非常困惑。

------解决方案--------------------
你的问题好奇怪。一般unicode编码是指字符的编码。java对象序列化后,该对象能转换成字节流在网络上传输和存储在硬盘上,在网络上的另一端能接收到字节流并把它转换成原来的对象,存在硬盘上的对象能用ObjectInputStream 读取该对象。
------解决方案--------------------
你到底知道不知道什么叫编码。字节流都是0101了还有个P的编码。
private String abcd = "abcd"才有编码。
如果说0101如何变回"abcd"而不是"????",那是你操作系统和jdk的默认编码。
------解决方案--------------------
1. Java对象在内存中的形式都是unicode编码么? 和存在硬盘上的有区别么?
内存中就是01,硬盘上一般不存对象吧,存的是class。

2. Java对象序列化后的二进制编码是什么编码呢? 这个可以自己设置么(比如修改成utf-8)?
这个是不可以的,也没什么用, 序列化只是规定个拆分和组装的顺序而已(个人理解)

3. unicode和utf系列编码的关系,
这个可以百度一下。