Java中URLEncode和URLDecode,编码与解码

转载地址:Java中URLEncode和URLDecode,编码与解码

生产中可能遇到到场景:
1.支付宝支付时传值(自定义参数内容 passback_params 需要encode编码后传输,回调接口中收到后需要decode解码)
2.GET方法中传参有特殊字符等内容,需要编码后传值。
3.有些web容器会默认将参数编码后传值,收到参数后需要解码。
4.导出表格、文件等操作,拼装的文件名在报文头中需编码后传入,以免因为自定义的文件名中有特殊字符报错。

try {
        // 将application/x-www-from-urlencoded字符串转换成普通字符串  
        String keyWord = URLDecoder.decode("%E4%BD%A0%E5%A5%BD", "utf-8");  
        System.out.println(keyWord);  //输出你好

        // 将普通字符创转换成application/x-www-from-urlencoded字符串  
        String urlString = URLEncoder.encode("你好", "utf-8");  //输出%E4%BD%A0%E5%A5%BD
        System.out.println(urlString);

    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
}

PS:

由于页面链接在传参时出现乱码,因此查找原因,由于带图表的页面不能以utf-8进行charset设置,chartset=gbk,因此在跳转到chartset=utf-8页面时由于编码方式不同不能传参加载成功,因此采用这种编码再解码的方式可实现。

URLEncoder.encode()函数是把中文字符转换成十六进制,然后在每个字符前加%;

URLDecoder.decode()函数与URLEncoder.encode()正好相反,用于解码已编码的url字符串,将十六进制转换成中文。

Java包:

import java.net.URLEncoder;
import java.net.URLDecoder;

 code:

<a href="detail.jsp?section=<%=URLEncoder.encode("示例","utf-8")%>">示例</a>
String section=URLDecoder.decode(request.getParameter("section"),"utf-8");
section=new String(section.getBytes("iso-8859-1"), "utf-8");

 

posted @ 2022-08-11 09:11  bellin124  阅读(17323)  评论(0编辑  收藏  举报