import java.io.IOException;public class Test {
public static void main(String[] args) throws IOException { String str = "中国";
byte[] b = str.getBytes("GB2312");
System.out.println(b.length + "GBK" + (str));
for (byte bi : b) {
System.out.println(Integer.toHexString(bi));
} str = new String(b, "UTF-8");
b = str.getBytes("UTF-8");
System.out.println("UTF-8  " + b.length + str);
for (byte bi : b) {
System.out.println(Integer.toHexString(bi));
} str = new String(b, "iso-8859-1");
b = str.getBytes("iso-8859-1");
System.out.println("ISO" + b.length + str);
for (byte bi : b) {
System.out.println(Integer.toHexString(bi));
}
System.out.println("--------转回去-------"); str = new String(b, "UTF-8");
b = str.getBytes("UTF-8"); System.out.println("utf-8" + (b.length) + str); for (byte bi : b) {
System.out.println(Integer.toHexString(bi));
} str = new String(b, "GB2312");
b = str.getBytes("GBK"); System.out.println("GB2312  " + b.length + str); for (byte bi : b) {
System.out.println(Integer.toHexString(bi));
}
}
}怎么转不回来,ISO-8859-1 到UTF-8都正常,但UTF-8到GB2312就转回到'中国'

解决方案 »

  1.   

    文件格式就是UTF-8吧,就是你这个java类的编码格式
      

  2.   

    是GBK
    text file encdong GBK
      

  3.   

    我的输出结果:c:\J>java T
    5GBK中国
    3f
    3f
    3f
    ffffffa8
    ffffffb2
    UTF-8  9???
    3f
    3f
    3f
    ffffffef
    ffffffbf
    ffffffbd
    ffffffef
    ffffffbf
    ffffffbd
    ISO9???锟斤
    3f
    3f
    3f
    ffffffef
    ffffffbf
    ffffffbd
    ffffffef
    ffffffbf
    ffffffbd
    --------转回
    utf-89?????
    3f
    3f
    3f
    ffffffef
    ffffffbf
    ffffffbd
    ffffffef
    ffffffbf
    ffffffbd
    GB2312  9??
    3f
    3f
    3f
    ffffffef
    ffffffbf
    ffffffbd
    ffffffef
    ffffffbf
    ffffffbd
      

  4.   

    我的执行结果:
    4GBK中国
    ffffffd6
    ffffffd0
    ffffffb9
    fffffffa
    ISO4???ú
    ffffffd6
    ffffffd0
    ffffffb9
    fffffffa
    UTF-8  8?й?
    ffffffef
    ffffffbf
    ffffffbd
    ffffffd0
    ffffffb9
    ffffffef
    ffffffbf
    ffffffbd
    ISO8????????
    ffffffef
    ffffffbf
    ffffffbd
    ffffffd0
    ffffffb9
    ffffffef
    ffffffbf
    ffffffbd
    --------转回去-------
    utf-88?й?
    ffffffef
    ffffffbf
    ffffffbd
    ffffffd0
    ffffffb9
    ffffffef
    ffffffbf
    ffffffbd
    GB2312  8锟叫癸拷
    ffffffef
    ffffffbf
    ffffffbd
    ffffffd0
    ffffffb9
    ffffffef
    ffffffbf
    ffffffbd
      

  5.   

    so-8859-1是JAVA网络传输使用的标准字符集,而gb2312是标准中文字符集,当你作出提交表单等需要网络传输的操作的时候,就需要把 iso-8859-1转换为gb2312字符集显示,否则如果按浏览器的gb2312格式来解释iso-8859-1字符集的话,由于2者不兼容,所以会 是乱码.
      

  6.   

    http://kongjian.baidu.com/roc_1983/blog/item/b5701103be34ece909fa9306.html这个文章不错,楼主看看就明白了
      

  7.   

    这与字符编码所使用的编码集有关,严禁将 GBK 与 UTF-8 互转!这样做会导致编码信息丢失。至于为什么,可以看看这个帖子:
    http://topic.csdn.net/u/20080623/16/e0f44f00-eaf9-4d38-b325-a3cc443f2ec9.html