Java实现的URL编码和解码技术
Java实现的URL编码和解码技术
Main 方法
public static void main(String[] args) {
// TODO Auto-generated method stub
String url="https%3A%2F%#%2Fvideoplayback%3Fpcm2cms%3Dyes%26mime%3Dvideo%252Fmp4%26pl%3D21%26itag%3D22%26\u0026itag=43\u0026type=video%2Fwebm%3B+codecs%3D%22vp8.0%2C+vorbis%22\u0026quality=medium";
String url2="#/videoplayback?pcm2cms=yes&mime=video/mp4&pl=21&itag=22&&itag=43&type=video/webm; codecs=\"vp8.0, vorbis\"&quality=medium";
String decodeURL = decode(url);
System.out.println("Decoded URL: "+decodeURL);
String encodeURL = encode(url2);
System.out.println("Encoded URL2: "+encodeURL);
}
它是如何工作的?
1. url 是一个变量,保存着我们希望解码的已被编码的 URL
2. url2 是保存着我们希望编码的 url 的变量
3. 调用 decode 方法,该方法解码和打印 URL
4. 调用 encode 方法,该方法编码和打印 url2
Encode 方法
public static String encode(String url) {
try {
String encodeURL=URLEncoder.encode( url, "UTF-8" );
return encodeURL;
} catch (UnsupportedEncodingException e) {
return "Issue while encoding" +e.getMessage();
}
}
它是如何工作的
1. 使用名为 URLEncoder 的预定义 Java 类的 encode 方法
2. URLEncoder 类的 encode 方法需要两个参数:
a. 第一个参数定义的是待编码的 URL
b. 第二个参数定义的是使用的编码方案
3. 编码之后,将返回编码后的 URL 结果
public static String decode(String url) {
try {
String prevURL="";
String decodeURL=url;
while(!prevURL.equals(decodeURL))
{
prevURL=decodeURL;
decodeURL=URLDecoder.decode( decodeURL, "UTF-8" );
}
return decodeURL;
} catch (UnsupportedEncodingException e) {
return "Issue while decoding" +e.getMessage();
}
}
Decode 方法
public static String decode(String url){
try {
String prevURL="";
String decodeURL=url;
while(!prevURL.equals(decodeURL))
{
prevURL=decodeURL;
decodeURL=URLDecoder.decode( decodeURL, "UTF-8" );
}
return decodeURL;
} catch (UnsupportedEncodingException e) {
return "Issue while decoding" +e.getMessage();
}
}
它是如何工作的
1. 因为相同的 URL 可以被多次编码,所以我们需要一直对它进行解码直到不能再解码为止。
举个例子,"video%252Fmp4" 是两次编码的结果。第一次解码后,我们得到 "video%2Fmp4"。要得到正确的结果 "video/mp4",我们需要再解码一次。
2. 使用名为 URLEncoder 的预定义 Java 类的 decode 方法来解
3. URLDecoder 类的 decode 方法需要两个参数:
a. 第一个参数定义需要解码的 URL
b. 第二个参数定义使用的解码方案
4. 解码后,返回已解码的 URL.
5. 创建两个变量:prevURL 为空串,decodeURL 包含待解码的 URL
Variable State:
prevURL = ""
decodeURL ="somethingvideo%252Fmp4"
6. 创建一个重复执行的步骤,直到 prevURL 与 decodeURL 的值相等
7. 将 decodeURL 的值赋值给 prevURL,将传递的 URL 解码后的值赋给 decodeURL
Variable State:
prevURL = "somethingvideo%252Fmp4"
decodeURL ="somethingvideo%2Fmp4"
8. 如你所见,prevURL 的值不等于 decodeURL 的值,我们再次执行
Variable State:
prevURL = "somethingvideo%2Fmp4"
decodeURL ="somethingvideo/mp4"
9. 再一次
Variable State:
prevURL = "somethingvideo/mp4"
decodeURL ="somethingvideo/mp4"
10. 现在,prevURL 的值等于 decodeURL 的值了,得到了正确的解码结果。
输出
Decoded URL: #/videoplayback?pcm2cms=yes&mime=video/mp4&pl=21&itag=22&&itag=43&type=video/webm; codecs="vp8.0, vorbis"&quality=medium Encoded URL2: https%3A%2F%#%2Fvideoplayback%3Fpcm2cms%3Dyes%26mime%3Dvideo%2Fmp4%26pl%3D21%26itag%3D22%26%26itag%3D43%26type%3Dvideo%2Fwebm%3B+codecs%3D%22vp8.0%2C+vorbis%22%26quality%3Dmedium
完整的程序
package com.cooltrickshome; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; public class URLEncodeDecode {
public static void main(String[] args) {
// TODO Auto-generated method stub String url="https%3A%2F%#%2Fvideoplayback%3Fpcm2cms%3Dyes%26mime%3Dvideo%252Fmp4%26pl%3D21%26itag%3D22%26\u0026itag=43\u0026type=video%2Fwebm%3B+codecs%3D%22vp8.0%2C+vorbis%22\u0026quality=medium";
String url2="#/videoplayback?pcm2cms=yes&mime=video/mp4&pl=21&itag=22&&itag=43&type=video/webm; codecs=\"vp8.0, vorbis\"&quality=medium";
String decodeURL = decode(url);
System.out.println("Decoded URL: "+decodeURL);
String encodeURL = encode(url2);
System.out.println("Encoded URL2: "+encodeURL);
}
public static String decode(String url)
{
try {
String prevURL="";
String decodeURL=url;
while(!prevURL.equals(decodeURL))
{
prevURL=decodeURL;
decodeURL=URLDecoder.decode( decodeURL, "UTF-8" );
}
return decodeURL;
} catch (UnsupportedEncodingException e) {
return "Issue while decoding" +e.getMessage();
}
}
public static String encode(String url)
{
try {
String encodeURL=URLEncoder.encode( url, "UTF-8" );
return encodeURL;
} catch (UnsupportedEncodingException e) {
return "Issue while encoding" +e.getMessage();
}
}
}
感谢大家阅读由java培训机构分享的“Java实现的URL编码和解码技术”希望对大家有所帮助,更多精彩内容请关注Java培训官网
免责声明:本文由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除
【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!
Java开发高端课程免费试学
大咖讲师+项目实战全面提升你的职场竞争力
- 海量实战教程
- 1V1答疑解惑
- 行业动态分析
- 大神学习路径图
相关推荐
更多达内就业喜报
更多>Java开班时间
-
北京 丨 11月27日
火速抢座 -
上海 丨 11月27日
火速抢座 -
广州 丨 11月27日
火速抢座 -
兰州 丨 11月27日
火速抢座 -
杭州 丨 11月27日
火速抢座 -
南京 丨 11月27日
火速抢座 -
沈阳 丨 11月27日
火速抢座 -
大连 丨 11月27日
火速抢座 -
长春 丨 11月27日
火速抢座 -
哈尔滨 丨 11月27日
火速抢座 -
济南 丨 11月27日
火速抢座 -
青岛 丨 11月27日
火速抢座 -
烟台 丨 11月27日
火速抢座 -
西安 丨 11月27日
火速抢座 -
天津 丨 11月27日
火速抢座 -
石家庄 丨 11月27日
火速抢座 -
保定 丨 11月27日
火速抢座 -
郑州 丨 11月27日
火速抢座 -
合肥 丨 11月27日
火速抢座 -
太原 丨 11月27日
火速抢座 -
苏州 丨 11月27日
火速抢座 -
武汉 丨 11月27日
火速抢座 -
成都 丨 11月27日
火速抢座 -
重庆 丨 11月27日
火速抢座 -
厦门 丨 11月27日
火速抢座 -
福州 丨 11月27日
火速抢座 -
珠海 丨 11月27日
火速抢座 -
南宁 丨 11月27日
火速抢座 -
东莞 丨 11月27日
火速抢座 -
贵阳 丨 11月27日
火速抢座 -
昆明 丨 11月27日
火速抢座 -
洛阳 丨 11月27日
火速抢座 -
临沂 丨 11月27日
火速抢座 -
潍坊 丨 11月27日
火速抢座 -
运城 丨 11月27日
火速抢座 -
呼和浩特丨11月27日
火速抢座 -
长沙 丨 11月27日
火速抢座 -
南昌 丨 11月27日
火速抢座 -
宁波 丨 11月27日
火速抢座 -
深圳 丨 11月27日
火速抢座 -
大庆 丨 11月27日
火速抢座