This task   (the reverse of   URL encoding   and distinct from   URL parser)   is to provide a function or mechanism to convert an URL-encoded string into its original unencoded form.

中文:任务是给你一个编码后的url,将它解码为编码前的格式。

Cases:
"http%3A%2F%2Ffoo%20bar%2F"   -->  "http://foo bar/"

"google.com/search?q=%60Abdu%27l-Bah%C3%A1"  --> "google.com/search?q=`Abdu'l-Bahá"

Solution:

编码的字符原则是:将所有的符号,编程%+该符号对应的16进制。只有找到所有的%16进制进行解码。

+ --> ' '

C/C++:

#include<stdio.h>
#include<string.h>//c++
#include<iostream>
#include<string>
#include "Poco/URI.h"using namespace std;inline int ishex(char x){//16return (x >= '0' && x <= '9') ||(x >= 'a' && x <= 'f') ||       (x >= 'A' && x<= 'F');
}int decode(const char *s, char *dev){char *o;const char *end = s + strlen(s);int c;for(o = dev; s<= end; o++){c = *s++;if(c == '+') c = ' ';else if (c == '%' && (!ishex( *s++) ||!ishex( *s++) ||!sscanf(s - 2, "%2x", &c))) //from s-2 start two chars in creturn 1;if(dev) *o = c;//}return o - dev; //length
}//c++ or g++
string decode(string encoded){string decoded;Poco::URI::decode(eccoded, decoded);return decoded;
}int main(){const char *url = "http%3A%2F%2ffoo+bar%2fabcd";string encoded("http%3A%2F%2ffoo+bar%2fabcd");char out[strlen(url) + 1]; //output decoded urlprintf("legth: %d\n", decode(url,0)); //get length of decoded url puts(decode(url,out) < 0 ? "bad string": out);    cout<<decode(encoded)<<endl;return 0;
}

Java:

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;public class Main
{public static void main(String[] args) throws UnsupportedEncodingException{String encoded = "http%3A%2F%2Ffoo%20bar%2F";String normal = URLDecoder.decode(encoded, "utf-8");System.out.println(normal);}
}

Python3:

import urllib
print(urllib.parse.unquote("http%3A%2F%2Ffoo%20bar%2F"))

参考(copy):http://rosettacode.org/wiki/URL_decoding#C

URL deconding URL解码相关推荐

  1. python3编码和解码_python3的url编码和解码,自定义gbk、utf-8的例子

    因为很多时候要涉及到url的编码和解码工作,所以自己制作了一个类,废话不多说 码上见! # coding:utf-8 import urllib.parse class Urlchuli(): &qu ...

  2. python3默认编码_python3的url编码和解码,自定义gbk、utf-8的例子

    因为很多时候要涉及到url的编码和解码工作,所以自己制作了一个类,废话不多说 码上见! # coding:utf-8 import urllib.parse class Urlchuli(): &qu ...

  3. python 解码gbk_Python3的url编码和解码,自定义gbk、utf-8的例子

    今天小编就为大家分享一篇python3的url编码和解码,自定义gbk.utf-8的例子,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 因为很多时候要涉及到url的编码和解码工作,所 ...

  4. python中的URL编码和解码

    python中的URL编码和解码:test.py 1 # 引入urllib的request模块 2 import urllib.request 3 4 url = 'https://www.douba ...

  5. python url编码_python url编码和解码

    一.为什么要进行Url编码 url带参数的请求格式为(举例): http://www.baidu.com/s?k1=v1&k2=v2 当请求数据为字典data = {k1:v1, k2:v2} ...

  6. iOS端URL编码和解码过程

    一.URL含义 1.URL定义 URL 是Uniform Resource Locator 的缩写,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址 ...

  7. Javascript中的url编码与解码(详解)

    摘要 本文主要针对URI编解码的相关问题做了介绍,对url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript中和编解码相关的几对函数escape / unescap ...

  8. lua处理url编码与解码

    参考 lua urlencode urldecode URL encoding(Others-Community)https://titanwolf.org/Network/Articles/Arti ...

  9. URL编码和解码 C++类URL编码和解码使用技巧

    想了解C++类URL编码和解码使用技巧的相关内容吗,在本文为您仔细讲解URL编码和解码的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:URL编码,解码,下面大家一起来学习吧. 在项目开发过 ...

最新文章

  1. 使用 git 下载linux 源码
  2. C#学习 小知识_多态的简单实现_2018Oct
  3. thinkphp 微信服务器验证代码_基于ThinkPHP5微信后台管理平台
  4. Linux系统中CPU使用率查询常用的5个命令
  5. 今天狂想自杀,找了两个星期的工具,原来我已经有了。
  6. Android中已经添加权限,依然提示缺少权限,此时你需要添加动态权限
  7. PowerDesigner里面将表中name列值拷贝到comment列
  8. 这些数据库领域的大事你知道多少?
  9. 模拟登录(一次自动调转)
  10. 企业级nginx服务优化(三 )Apache+防盗链
  11. 快速阅读之眼球的训练
  12. 设计心理学读书笔记 之一 记忆的结构
  13. 微信小商店设置服务器,微信小商店绑定运营者微信号步骤流程
  14. python代码格式化工具下载_python 代码格式化工具:autopep8
  15. 两台计算机互相共享一个网络,两台电脑共用一个路由器上网,但两台电脑不能互相访问共享,怎样设置啊?两台电脑系统都XP的...
  16. APView500电能质量在线监测装置 谐波分析 电压不平衡
  17. 5G时代到底会发生什么
  18. Win10玩游戏时输入法引起的闪退解决办法
  19. Debian dns设置
  20. 微信小程序2D canvas绘制分享海报

热门文章

  1. 【Mac SSH】SSH连接工具finalShell推荐
  2. linux系统安装MySQL数据库安装保姆级教程及1045错误和2058问题解决
  3. 142.CSS 海盗船加载特效
  4. LeetCode 460. LFU缓存
  5. 京东云李道兵:对象存储的新挑战
  6. 企业管理员必看:企业邮箱如何注册?企业邮箱账号怎么管理?
  7. html5 渐变动画效果图,html5+css3城市场景动画_觉唯设计
  8. python根据x轴、y轴坐标在坐标轴里画出曲线图
  9. [2016 NUIST 程序设计竞赛] D. 达朗贝尔的台阶
  10. MacOSX安装OpenCC实现繁体字转简体字