java - URLEncode - URLDeCode

本文详细介绍了URL编码和解码的过程,包括特殊字符处理、异常情况解决及编码替换方法,旨在帮助开发者理解并正确处理URL参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.URLEncode - URLDecode 编码加密  这两个类是jdk中封装的类,不需要额外导入jar包

String   para  =   java.net.URLEncoder.encode("乱码",   "utf-8");    -  编码 

String   para1   =   java.net.URLDecoder.decode(para,   "utf-8");   -  解码

para:   %E4%B9%B1%E7%A0%81

para1:  乱码

String  test = new  String(request.getParameter("zhongguo").getBytes("iso8859_1"));     

zhongguo = java.net.URLDecoder.decode(test,"utf-8"); 

 

2.编码中的特殊字符http://blog.sina.com.cn/s/blog_6b2d01f60101763v.html  

URLencode.encode 是'.', '-', '*', '_'符号不编码,而URL传输需要字符串是 "-", ".", "_", "~"不编码。那么可以这样的

String URL="www.baidu.com";

String ENCODING="utf-8";

String strURL= URLEncoder.encode(URL, ENCODING).replace("*","*").replace("~", "~").replace("+"," "); 

3.使用URLDecoder.decode() 方法接收参数时如果参数中含有“ %”这个字符,就会抛异常  java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern -,
原因:传参数的时候用encodeURIComponent("是的%试试")%被URL认为是转义的标记,URL规范有自己的规定,%25会被转义成%!你现在的%后面跟了个中文字符,它要转义的时候发现'%试'是它不认识的,就给你报错了!
解决方法:1. 参数用base64转码,接收到后解码一下
Java6自带了jar包的,只要引用下:
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

 /**
  * Base64解密
  * @param key
  * @return
  * @throws Exception
  */
 public static byte[] decoderBase64(String key) throws Exception {
  return (new BASE64Decoder()).decodeBuffer(key);
 }
 /**
  * Base64加密
  * @param key
  * @return
  * @throws Exception
  */
 public static String encoderBase64(byte[] key) throws Exception {
  return (new BASE64Encoder()).encodeBuffer(key);
 }
 
2.使用其他字符替换%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值