java.util.Properties p = System.getProperties();    System.out.println("-------- listing properties ---------");
    Set keys = p.keySet();
    
    for (Iterator iter = new TreeSet (keys).iterator(); iter.hasNext(); ) {
        String key = (String) iter.next();
        String val = (String) p.get(key);
        System.out.println (key + "=" + val);
    }
You will find this:
sun.io.unicode.encoding=UnicodeLittle

解决方案 »

  1.   

    这里还有这么多东西,该死的sun怎么不在文档里面说,不过我觉得还是不对,照理来说操作系统当前的字符集是unicode,那么下面的语句取出的编码就应该是按照unicode的
    "abc".getBytes();
    但是实际上取出的编码和gb2312相同,而且gb2312的编码和gbk相同,unicode=unicodeLittle!=UTF8!=UTF16,这到底是怎么回事?字符串到底是按照什么取默认编码的?
      

  2.   

    gbk是gb2312的超集一般编码都是用unicode,除非你在编译时加上了encoding选项。
      

  3.   

    编译器上加encoding选项是源文件的格式吧,到了运行的时候应该就不起作用了是不是,String内部表示应该都是unicode,但是getBytes取出来以后好像是按照系统默认的字符集的,但是这个字符集怎么确定
      

  4.   

    真是太烦过却了,JAVA为什么这么难学。
      

  5.   

    Properties p = System.getProperties();
    p.get( "file.encoding" );
      

  6.   

    http://www-900.ibm.com/developerWorks/cn/java/java_chinese/index.shtml这篇文章说了中文的问题