public class CharCode
{
   public static void main(String[] args)throws Exception
   {
      System.setProperty("file.encoding","iso8859-1");  //(1)      System.getProperties().list(System.out);      String strChina = "中国";
      for(int i = 0;i<strChina.length();i++)
      {
         System.out.println(Integer.toHexString((int)strChina.charAt(i)));
      }      byte[] buf = strChina.getBytes();  //(2)
      for(int i=0;i<buf.length;i++)
      {
         System.out.println(Integer.toHexString(buf[i]));  //(3)
      }
      
      for(int i=0;i<buf.length;i++)
      {
         System.out.write(buf[i]);   //(4)
      }
      System.out.println();
   }
}
-----------------------------------------------------------------------
(1)确实已经把java虚拟机环境属性改为iso8859-1了..(3)和(4)却是以GBK的字符编码输出...把(2)改为byte[] buf = strChina.getBytes("iso8859-1"); 才按照iso8859-1的字符编码输出....为什么(1)没起作用?我是新人...没有分....请大家多多帮忙....

解决方案 »

  1.   

    up,我跟你打印出来的一样4e2d
    56fd
    ffffffd6
    ffffffd0
    ffffffb9
    fffffffa
    中国
      

  2.   

    sun.jnu.encoding=GBK才是他默认的编码方式吧...
      

  3.   

    我没有试,但是一眼看到一个小错误,iso-8859-1
      

  4.   

    照你门说的去改了..输出结果还是
    4e2d
    56fd
    ffffffd6
    ffffffd0
    ffffffb9
    fffffffa
    中国正确的输出结果应该是
    4e2d
    56fd
    3f
    3f
    ??
    中国
      

  5.   

    上面的(2)、(3)、(4)都是按操作系统缺省编码解码的
    操作系统缺省编码可以这样取得:
    String DefaultOSencoding=System.getProperty("file.encoding");
    但是改变file.encoding并不能改变操作系统缺省编码(控制面板==>;区域设置 设置实现)的,
    file.encoding是供jvm编译时用的,所以这里改变file.encoding基本上是无用的.上面的整个流程是Source-->javac-->javaIO,其中Source-->javac与file.encoding有直接关系.
    JavaIO与操作系统缺省编码有直接联系(人为指定编码、解码除外),另外就是java中的字符集是UNICODE.
      

  6.   

    好像在jdk1.4.2之前是可以的,1.4.2及以后就不行了