Java中中文转换成UTF-8的格式之后,就不能再转变成gb2312,这是不可逆的。
UTF-8的编码格式和gb2312是不兼容的。
你把它反编译回去啊 先编译成utf-8,然后编译成iso-8859-1 再编译成gb2312就可以得到源码了啊
你拿一个gbk码表中的数字(编码号)去utf8码表中找,有两种可能。1:utf8码表中没有一个字符对应这个码号;2:utf8码表中有一个字符是这个码号,但和gbk码表中对应的那个字符不是同一个。
new String(b.getBytes("ISO-8859-1"),"utf8");这名话表示你硬要拿着一些gbk编号去utf8码表中找字符,找到了,从utf8码表中取找到的那个,找不到返回“?”,结果得到的字符串的二进制和你最原来的那个字符串的二进制不一样了。所以再去gbk码表中查找也得不到正确的字符了。
以你这种做法的话是编不回的。
看起来的意思是要转换成utf-8吗?
b = new String(b.getBytes("ISO-8859-1"), "gb2312");
b = new String(b.getBytes("utf8"), "utf8");
就可以了。
new String(b.getBytes("utf-8"), "gbk")