String strChina="中国";
byte buf[]=strChina.getBytes("ISO8859-1");
System.out.println(buf.length);

    String str=new String(buf,0,buf.length);
     System.out.println(str);     
     String str1=new String(str.getBytes("ISO8859-1"),"gb2312");
     System.out.println(str1);为什么str1输出是乱码呢?我已经转化了啊

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【shunzi__1984】截止到2008-07-17 10:46:51的历史汇总数据(不包括此帖):
    发帖的总数量:11                       发帖的总分数:180                      每贴平均分数:16                       
    回帖的总数量:9                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:11                       结贴的总分数:180                      
    无满意结贴数:5                        无满意结贴分:160                      
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:45.45 %               无满意结分率:88.89 %                  
    敬礼!
      

  2.   

    你看一下这里写的!
    http://blog.csdn.net/rascalboy520/archive/2008/06/06/2516038.aspx
      

  3.   

    我认为strChina本身就是以gb2312编码的。
    strChina.getBytes("ISO8859-1");得到的就已经不对了,应该是
    strChina.getBytes("gb2312");
      

  4.   

    对于汉字,仅使用ISO8859-1无法尽编,因此这个过程是不可逆的,不是函数,映射了多值String strChina = "中国";
    byte buf[] = strChina.getBytes("ISO8859-1");编码后,两个字节都是63 63String str = new String(buf, "ISO8859-1");
    求其逆,无法找到对应值
    如果原串是ascii字符,则可以
      

  5.   

    在把中文转化为ISO8859-1格式时,已经把中文信息丢失,所以没法恢复的。
      

  6.   

    我现在就是自己写的一个测试程序,加深对编码的理解,没有实际应用价值,
    像楼上那样,当然可以正确显示,我现在就是对中文进行ISO8859-1编码成字节数组,然后想办法
    正常显示,我的思路是编码解码后.然后用ISO8859-1还原,然后用GBK解码,理论上应该是可以
    正常显示的,,,,,,请大家就事论事.
      

  7.   

    字符编码的考虑环境就不对..
    你在JAVA里直接分配的String对象,默认就是以gb进行编码的如果要测那iso的转化,你可以用html,并且此页面的编码使用gb以外的编码,例如iso或者utf
    来提交一个中文参数,这个时候你在servlet上直接打印这个字符串看看
      

  8.   

    首先ISO8859-1就拼错了嘛,应该ISO-8859-1
    另外我测了下,用ISO-8859-1获取byte数组得到的肯定是乱码,charset只好用gb2312,gbk,gb18030,utf-8,这样可以保证第一次打印不乱码
    保证第二次打印不乱码,需要charsetAfter 等于charsetBefore 。
    如下:
    public class A {
    public static void main(String[] args) throws Exception {
    String charsetAfter = "gb2312";
    String charsetBefore = "gb2312";

    String strChina = "中国";

    byte buf[] = strChina.getBytes(charsetAfter);
    System.out.println(buf.length); String str = new String(buf, charsetAfter);
    System.out.println(str);
    String str1 = new String(str.getBytes(charsetBefore), charsetAfter);
    System.out.println(str1);
    }
    }
      

  9.   

    兄弟,肯定不行啦,语言环境为中文的jvm默认采用的是gbk编码,当然汉字也是采用gbk编码,而gbk编码采用两个字节来表示一个汉字,但是ISO-8859-1是西方编码,只兼容英文和部分西欧文字,是单字节编码,所有由gbk到iso8859-1时,每个汉字就丢失了一字字节,所以System.out.println(buf.length); 输出了2,而不是4,用iso8859-1编码后,无论你用什么编码,汉字都无发还原了,但你只要采用双字节的编码方式来编码,解码,只要次数不错,都可以,不信:你采用utf-8,unicode等双字节编码方式。
      

  10.   

    http://campuss.blog.sohu.com/74210127.html