凡是讲java的书都必有这句。但是我死活没看明白。java到底在那里使用了unicode?是单指关于char类型的操作是遵循unicode?还有那个诡异的serializable.为什么网间传输和写对象流需要序列化?难道是unicode太耗空间了JRE通过判断serializable型别对unicode进行编码和解码吗?概念混乱了 高手在那里阿

解决方案 »

  1.   

    要熟悉字符操作,必须明白一个概念,就是字符集,其实字符在程序中是以数字的形式存在的,一个数字对应一个字符,例如'a'对应97,这种数字和字符的对应关系叫做字符集。常见的字符集有很多,例如ASCII、GB2312、ISO8859-1等。
    Java语言为了更好的支持国际化,所以使用了Unicode字符集。
      

  2.   

    首先我认为对机器来说,任何程序都是数据和方法。方法只是一些跳转和运算命令感觉与编码无关。数据的话,java的基本数据类型长度都定了,其中有一个数据类型是char,书上描述说是一个usc-2的Unicode 整个java语言就一个数据类型是unicode,
    其次
    我前面查了好多本书,里面说.java文件到再内存里执行一共有5步骤--------------------------------------
    编辑器
    编译器(javac后变成字节码)
    类装载
    类验证
    解释器
    -------------------------------------我认为编辑器不是unicode,文件保存encoding应该是系统的编码,但是后面四部哪一个环节变成Unicode的呢在gbk环境下的a.java
    class a{
     String a="中文"
    }它在从文件变到内存再从内存变到里文件过程中
    变量a的编码是一直是gbk,?
    还是中gbk变成unicode,再重unicode变成gbk?我已经快崩溃了
      

  3.   

    我的理解:
    这里所说的unicode是指编译后的字节码类型
      

  4.   

    楼上说的没错,变量a在编译之后就变成unicode了,class文件中的“中文”是unicode,而java文件中的“中文”是gbk
      

  5.   

    是的 我已经找到证据javac 有个可选参数是encoding 默认的话是系统的编码但是还有很多细节没想明白大家一起讨论讨论
      

  6.   

    不过在class文件中中文好像是utf-8格式的因为用ultr打开看到的是E6xxxxE6xxxx的