IE 浏览器字符默认是以utf-8进行发送,在选项高级里可以查看到,如图:
下面是以“中”为例进行解析:
String str = "中";
String str1 = URLEncoder.encode(str, "utf-8");
String str2 = URLEncoder.encode(str1,"gbk");
System.out.println(str1);
System.out.println(str2);
String str3 = URLDecoder.decode(str2,"iso8859-1");
String str4 = URLDecoder.decode(str3,"utf-8");
System.out.println(str3);
System.out.println(str4);
输出结果:
“中”的utf-8编码时%E4%B8%AD,再进行一次gbk编码后是%25E4%25B8%25AD,这是因为此时“%”的ascii码值是25(十六进制)。说明url对任何字符的编码都是在某字符被编码后在前面加一个"%"号来进行标识。在解码时,总是解析“%”后面的一个字节,“%”号不动。所以在以utf-8编码后,中间无论以其他任何形式的字符编码进行编码和解码,只要最后以utf-8进行解码,最后都会得到正确的字符。