Java 使用URLEncoder.encode和URLDecoder.decode编解码(utf-8)中文及特殊字符
1、URLEncoder.encode和URLDecoder.decode
URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号,即
只有字母和数字[0-9a-zA-Z]、一些特殊符号$-_.+!*'()[不包括双引号]、以及某些保留字(空格转换为+),才可以不经过编码直接用于URL,如果URL中有汉字,就必须编码后使用。
URLDecoder类包含一个decode(String s,String enc)静态方法,它可以将application/x-www-form-urlencoded MIME字符串转成编码前的字符串;
URLEncoder类包含一个encode(String s,String enc)静态方法,它可以将中文字符及特殊字符用转换成application/x-www-form-urlencoded MIME字符串。
2、使用URLEncoder.encode编码
publicstaticStringurlEncode(String urlToken){
String encoded =null;
try{//用URLEncoder.encode方法会把空格变成加号(+),encode之后在替换一下
encoded = URLEncoder.encode(urlToken,"UTF-8").replace("+","%20");
}catch(UnsupportedEncodingException e) {
logger.error("URLEncode error {}", e);
}
returnencoded;
}
3、使用URLEncoder.encode解码
publicstaticStringurlEncode(String urlToken){
String decoded =null;
try{
decoded =URLDecoder.decode(urlToken,"UTF-8");
}catch(UnsupportedEncodingException e) {
logger.error("URLEncode error {}", e);
}
returndecoded;
}