我用的是中文xp,jdk1.5,Eclipse 3.2,在关于字符集转换的问题上不太明白
1.中文xp用的字符集是GBK么?在哪里可以看到?
2.用System.getProperties().list(System.out);看到的系统参数中,有一行:file.encoding=GBK,但是在另一台电脑上是file.encoding=GB18030,这个如何修改?由什么决定?
3.Eclipse的那个文本编码和xp,jvm的编码有什么关系?这个选项的主要目的是什么?如果把Eclipse中一个工程换一个文本编码,那么编译成的class文件和未换之前是相同的还是不同的?

解决方案 »

  1.   

    下边这段例子,如果我输入两个中文的话。
                    Properties pps=System.getProperties();

    pps.put("file.encoding","ISO-8859-1");
    int data;
    byte[] buf=new byte[100];
    int i=0;
    while((data=System.in.read())!='q')
    {
    buf[i]=(byte)data;//这里读进的是中文字符按GBK编码成的字节数组
    i++;
    }
    String str=new String(buf,0,i);//这里是把字节数组按默认方式解码成unicode字符串,我不是很理解,什么叫做解码成unicode字符串呢?这unicode字符串在内存中是什么形式存放的?
    //System.out.println(str);
    String strGBK=new String(str.getBytes("ISO-8859-1"),"GBK");
    System.out.println(strGBK);
      

  2.   

    我理解“按默认方式解码成unicode字符串”是这样,大家看看对不对:
    比如默认方式是ISO8859-1,这句话就是说把字节数组按照ISO8859-1对照翻译,看看是那些字符,然后再把这些字符用unicode编码方式编码,把编成的字节数组存储起来,是这样么?有没有人能讲讲内存里字符串是怎么存储的?是存储的每个字符的unicode码么?