static unsigned char char_to_hex( unsigned char x )
return (unsigned char)(x > 9 ? x + 55: x + 48);
static int is_alpha_number_char( unsigned char c )
if ( (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') )
return 1;
return 0;
//url编码实现
void urlencode( unsigned char * src, int src_len, unsigned char * dest, int dest_len )
unsigned char ch;
int len = 0;
while (len < (dest_len - 4) && *src)
ch = (unsigned char)*src;
if (*src == ' ')
*dest++ = '+';
else if (is_alpha_number_char(ch) || strchr("=!~*'()", ch))
*dest++ = *src;
*dest++ = '%';
*dest++ = char_to_hex( (unsigned char)(ch >> 4) );
*dest++ = char_to_hex( (unsigned char)(ch % 16) );
++src;
++len;
*dest = 0;
return ;
//解url编码实现
unsigned char* urldecode(unsigned char* encd,unsigned char* decd)
int j,i;
char *cd =(char*) encd;
char p[2];
unsigned int num;
for( i = 0; i < strlen(cd); i++ )
memset( p, '/0', 2 );
if( cd[i] != '%' )
decd[j++] = cd[i];
continue;
p[0] = cd[++i];
p[1] = cd[++i];
p[0] = p[0] - 48 - ((p[0] >= 'A') ? 7 : 0) - ((p[0] >= 'a') ? 32 : 0);
p[1] = p[1] - 48 - ((p[1] >= 'A') ? 7 : 0) - ((p[1] >= 'a') ? 32 : 0);
decd[j++] = (unsigned char)(p[0] * 16 + p[1]);
decd[j] = '/0';
return decd;
URL
编码时数字和字母不变,一些特殊字符(.()!~-*)也保持不变,空格编码为’+’,其他的比如中文编码为%十六进制(hex)的形式,下面给出
实现
的代码,正确性也可以在网页在线编码,
解码
器验证
#include <iostream>
#include <sstream>
#include <cstring>
using namespace std;
un...
const int nLen = sIn.GetLength() + 1;
register LPBYTE pOutTmp = NULL;
LPBYTE pOutBuf = NULL;
register LPBYTE pInTmp = NULL;
CString
urlEncode
(CString s){
int len = s.GetLength(); char *out = new char[len*9+1]; memset(out , 0 , len*9+1); int i , j; int ch = 0 ;
static char myhex[0xFF+1][4]; //add by zhouzd 2008-10-06 ...
// 知乎获取想法动作的 API
var base
url
= `https://api.zhihu.com/pins/${id}/actions?limit=20&withCredentials=true&offset=0`;
var comment
url
=...
[0-9] // 匹配所有的数字
[0-9.-] // 匹配所有的数字、句号、减号
[ \n\f\r\t\v] // 匹配所有的空白字符(空格、换行符、换页符、回车符、水平制表符、垂直制表符)
^[0-9]{1,}$ // 匹配所有的正数
^[0-9]+$ // +与{1,}相等,表示前面的内容可以是
备注:
C++
解析
URL
除了第三方
库
之外,还可以使用Parse
URL
,该函数定义在Shlwapi.h中,美中不足的是,无法解析出端口./************************************************************************/
/* Uri
C++
使用http形式,下载文件。
url
中如果出现中文,需要把编码改为UTF8。因为
C++
本来使用GBK编码,但默认的http请求是按UTF8编码的。不事先
转码
,tomcat等服务器就解释不了那个
url
。
方法很简单,直接使用CChineseCode提供的函数……搞掂……
http://files.cnblogs.com/kenkofox/CChineseCode%e4%b8%ad%e...
Python中的`
urlencode
`和`
url
decode
`是用于处理
URL
编码和
解码
的方法。
`
urlencode
`方法用于将一个字典形式的参数列表转换为
URL
编码的字符串。例如,假设有一个字典`params`包含以下键值对:
params = {"name": "张三", "age": 20, "city": "北京"}
使用`
urlencode
`方法将字典转换为
URL
编码的字符串:
import
url
lib.parse
url
_encoded =
url
lib.parse.
urlencode
(params)
print(
url
_encoded)
输出结果为:
name=%E5%BC%A0%E4%B8%89&age=20&city=%E5%8C%97%E4%BA%AC
`
url
decode
`方法用于将
URL
编码的字符串
解码
为字典形式的参数列表。例如,将上面的
URL
编码字符串
解码
为字典:
```python
import
url
lib.parse
url
_
decode
d =
url
lib.parse.parse_qs(
url
_encoded)
print(
url
_
decode
d)
输出结果为:
{'name': ['张三'], 'age': ['20'], 'city': ['北京']}
可以通过访问字典的键来获取对应的值:
```python
name =
url
_
decode
d['name'][0]
age =
url
_
decode
d['age'][0]
city =
url
_
decode
d['city'][0]
print(f"姓名:{name},年龄:{age},城市:{city}")
输出结果:
姓名:张三,年龄:20,城市:北京
通过这两个方法,我们可以方便地进行
URL
编码和
解码
的操作,以便于在HTTP请求或其他
URL
相关的场景中使用。
### 回答2:
Python中的
urlencode
方法是将字典数据编码为
URL
参数的字符串。它将字典键值对转换为一组key=value对,并用&符号链接起来。这通常用于构建GET请求的
URL
参数部分。
例如,将以下字典数据编码为
URL
参数字符串:
params = {'name': '张三', 'age': 20, 'city': '北京'}
通过使用
urlencode
方法,我们可以得到如下结果:
encoded_params =
url
lib.parse.
urlencode
(params)
print(encoded_params)
输出结果为:name=%E5%BC%A0%E4%B8%89&age=20&city=%E5%8C%97%E4%BA%AC
url
decode
的功能与
urlencode
相反,它用于将
URL
参数字符串
解码
为字典数据。例如,将上面编码后的字符串
解码
为字典数据:
decode
d_params =
url
lib.parse.parse_qs(encoded_params)
print(
decode
d_params)
输出结果为:{'name': ['张三'], 'age': ['20'], 'city': ['北京']}
注意,这里使用了
url
lib.parse模块来进行编码和
解码
。在Python 3中,
url
lib模块已经被拆分为多个子模块,其中
url
lib.parse包含了
URL
编码和
解码
相关的功能。
综上所述,Python中的
urlencode
和
url
decode
方法提供了方便的对
URL
参数进行编码和
解码
的功能,可以用于构建和解析GET请求的
URL
参数部分。