有的字符在url中传递的时候回编码(可能是自动的)将其符号转变为%加上ASCII码;如果在客户端或者服务端接收到的时候没有解码就会出现类似乱码的问题;其实不然只是没有进行解码
附部分编码规则
十六进制值 | |||
1. | + | URL 中+号表示空格 | %2B |
2. | 空格 | URL中的空格可以用+号或者编码 | %20 |
3. | / | 分隔目录和子目录 | %2F |
4. | ? | 分隔实际的 URL 和参数 | %3F |
5. | % | 指定特殊字符 | %25 |
6. | # | 表示书签 | %23 |
7. | & | URL 中指定的参数间的分隔符 | %26 |
8. | = | URL 中指定参数的值 | %3D |
这种情况就需要解码了,解决方式如下
java中的转码,这里需要自己对str也就是url的字符串进行下非空判断如果为空的话返回个空字符串
private final static String ENCODE = "UTF-8"; //自己的编码格式
public static String getURLEncoderString(String str) {
String result = "";
if (null == str) {
return "";
}
try {
result = java.net.URLEncoder.encode(str, ENCODE);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
java中的解码
public static String getURLDecoderString(String str) {
String result = "";
if (null == str) {
return "";
}
try {
result = java.net.URLDecoder.decode(str, ENCODE);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
javastript中的转码
escape(String s)
javastript中的解码
unescape(String s)