JAVA中url的特殊字符处理及url转码解码

在url中 , 只能使用url合法的字符 . 如果使用了非法字符来访问某资源(如:+#等) , 就会导致资源访问异常或失败 . 同时原生url中也是不支持中文的 , 以百度为例 , 当你搜索了中文关键词时 , 可以在url地址栏中明显的看出来中文被"编码转换了" . 本章暂时先不讨论特殊代码及中文字符的原因 , 先讲一下如何解决url中的特殊字符问题;

package com;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

/**
 * JAVA中url特殊字符的处理
 */
public class XTest {

	public static void main(String[] args) throws UnsupportedEncodingException {
		String url = "https://www.xtest.com/?key=";
		String wd = "智能+学习";
		String encoderUrl = URLEncoder.encode(wd, "UTF-8");
		System.out.println(url + encoderUrl);
		String decoderUrl = URLDecoder.decode(encoderUrl, "UTF-8");
		System.out.println(url + decoderUrl);
	}
}

在控制台可看到输出如下 : 
https://www.xtest.com/?key=%E6%99%BA%E8%83%BD%2B%E5%AD%A6%E4%B9%A0
https://www.xtest.com/?key=智能+学习

应用场景 : url中包含中文及特殊字符 , 另提醒一个项目中被忽视的地方 , 本人在此就深得教训;

url中需要嵌套另一个url时 , 如需要向第三方发送get请求 , 然后需要提供一个回调地址 , 这是就是把url作为参数值放入url中 , 这个url必然是合法的url , 但仍然不能直接拼接到url中, 会导致浏览器无法解析 . 所以需要进行url编码之后再进行拼接.


关于URL及其特殊字符的详细信息 , 可以参考这个页面 : 

URL编码详解


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值