Properties pps = System.getProperties();//获取系统属性
pps.put("file.encoding","ISO-8859-1");//将字符编码改为ISO-8859-1
pps.list(System.out);//将系统属性显示在控制台上
//读取控制台输入的汉字
int data;
byte[] buf = new byte[1000];
int i=0;
while((data=System.in.read())!='q'){
    buf[i]=(byte)data;
    i++;
}
String str = new String(buf,0,i);System.out.println(str);//输出正常--------1
System.out.println(new String(str.getBytes("ISO-8859-1"),"GB18030"));//输出乱码-----2解释:
我将系统的字符编码改为ISO-8859-1,在控制台输入汉字后,原本应该用2的输出才能正确显示,1的输出显示乱码,结果我得到的结果却恰恰相反

解决方案 »

  1.   

    iso-8859-1不能保存中文哦,你试错了吧?
      

  2.   

    字符集还是推荐utf-8,可以保存任何字符,其他的都有局限性,相对utf8都差一些。
      

  3.   

    xyz200003:
    你运行一下程序看看就知道:控制台输入的汉字能不能保存了!
    剩下的人:打非所问!!!
      

  4.   

    大家都没有理解我的意思
    我将系统的字符编码改为ISO-8859-1
    然后在控制台里输入汉字然后从SYSTEM.OUT中输出(默认是输出GBK字符格式的)所以System.out.println(new String(str.getBytes("ISO-8859-1"),"GBK"));
    原理上是应该正确的,但是实际错了 ,就是说我的汉字不是以ISO-8859-1输入,而是以GBK方式输入。
    我想问为什么我将字符集改为ISO-8859-1了,结果却不是呢?
      

  5.   

    GB18030没有见过,应该是GBK或者gb2312之类的吧
      

  6.   

    iso_8859_1是编码的方式不是字符集方法1 默认接受  默认输出肯定对
    方法2 你系统默认是什么字符集呢?如果是GB2312的话 能解释 GB18030的字符?
    也就是 以系统字符集的ISO88591编码 和 GB18030的ISO88591的编码不兼容(不一定兼容)
      

  7.   

    GB18030 --> gbk/gb2312/UTF-8
      

  8.   

    iso_8859_1是编码的方式不是字符集解释:
    Properties pps = System.getProperties();//获取系统属性 
    pps.put("file.encoding","ISO-8859-1");//将编码方式改为ISO-8859-1 
    pps.list(System.out);//将系统属性显示在控制台上 
    //读取控制台输入的汉字 
    int data; 
    byte[] buf = new byte[1000]; 
    int i=0; 
    while((data=System.in.read())!='q'){ 
        buf[i]=(byte)data;
        i++; 
    } String str = new String(buf,0,i); //以GBK的方式将字节数组数编码
    System.out.println(str);//输出正常--------以GBK的方式解码,正确读出
    String str = new String(buf,0,i,"ISO-8859-1"); //以ISO-8859-1的方式将字节数组数编码
    System.out.println(str);//输出不正常--------以GBK的方式解码,正确读出 
    System.out.println(new String(str.getBytes("ISO-8859-1"),"GBK"));//输出正常
      

  9.   

    你写错了。
    不是iso-8859-1
    是ISO8859-1
      

  10.   

    ISO-8859-1不支持汉字
    1。编码 解码都用了ISO-8859-1虽然可以正确显示
    但不能保证所有汉字都正确显示。
    2.你用了ISO-8859-1编码 用GB18030解码 编码方式不同 不能正确输出是正常的 。
    建议LZ使用支持汉字的编码方式进行编码和解码
      

  11.   

    中文一般GBK
    。再不行就UTF8
    不加设置的话一般中文JAVA会按GBK来处理的。
      

  12.   


    没有看清楚!请随意鄙视我。,,,不要脸得学习了一回。!不过我也是遇到过这样的问题! 当时是这样done的!虚心向各位请教!
      

  13.   

    我想是因为再次编码的问题。肯能你对它new String(str.getBytes("ISO-8859-1"),"GBK")再次编码了。
      

  14.   

    gbk或gb2312应该都可以吧,jsp中常用