菜鸟求教,关于new String(str.getBytes(“ISO-8859-1″),”GBK”)的疑问
假如str中含有中文,ISO-8859-1并不能对中文进行编码,那么str.getBytes(“ISO-8859-1″)怎么能获得中文的那部分的字节呢?...
假如str中含有中文,ISO-8859-1并不能对中文进行编码,那么str.getBytes(“ISO-8859-1″)怎么能获得中文的那部分的字节呢?
展开
3个回答
展开全部
import java.io.UnsupportedEncodingException;
public class $ {
public static void main(String[] args) {
String str = "abc我爱你def";
try {
for (int i = 0; i < str.length(); i++) {
String s = str.substring(i, i + 1);
byte[] b = s.getBytes("GBK");
//如果是全角(中文),长度是2,如果是半角字母,长度是1
if (b.length == 2) {
System.out.println(s);
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
追问
你好,我说的是按ISO-8859-1编码啊,如上:str.getBytes(“ISO-8859-1″)
追答
中文字符不能用ISO-8859-1
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
任何字符在计算中都是0或1,getBytes()可以理解为重新解码成0和1,在按gbk解码.再回到原点重新解码.不知道说的可还算简单易懂??
追问
str.getBytes(“ISO-8859-1″)的意思是按ISO-8859-1啊,你要说str.getBytes(“GBK″)我能理解,但是ISO-8859-1的话str要是中文怎么办
追答
举个例子,破解加密的,原文是hello,通过iso-8859-1解码出来的假如是keke,一看乱码不对,
1,再通过keke按照iso-8859-1编码变成原文,换一种编码继续解码
2,拿源码换一种编码
getBytes("码表")类似按码表编码,
new String(byte[] bytes,"码表");按码表解密bytes数组
还有,中文的值为负数.你可以试试将char类型的中文字符转成int,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询