C++替换方法和URL转义字符
来源:互联网 发布:淘宝id是名字还是账号 编辑:程序博客网 时间:2024/05/21 06:40
废话少说,工作中遇到了一个问题URL中存在类似于"&"的东西,这是其实是"&"的意思,个别设备可以播放,而一些设备播放不了,查问题耗费了半天。工作之余抽取了个公用函数,如下:
#include <string.h>... ...string replaceStr(string str, const char *replaceValue, const char *destValue){int pos = -1;while((pos = str.find(replaceValue)) >= 0){//LOGD("pos :%d",pos);str.erase(pos, strlen(replaceValue));if (destValue != NULL){str.insert(pos, destValue);}pos = -1;}return str;}
调用则如下:
string url = "http://111.13.3.63/vhot2.qqvideo.tc.qq.com/k0128a6tnxy.mp4?sdtfromv5000&amp;amp;vkey=C3F74B6DD48CCEE7C7C15A6203CF85B24BAA14C84DB6267EB63D39012D4F02616D854320E4F2AA260D3D1EC1523C1FD8D9509AB10488386E&platform=2&locid=8597199d-a751-4ac9-88c2-6ff26ec5f753&size=65975563&ocid=242229164";if (url.find("&") >= 0){url = replaceStr(url, "amp;", NULL);}if (url.find("&") >= 0){url = replaceStr(url, "&", "%26");}
看起来很冗余。。有待优化!
对于为什么& 替换成%26这就是url中的转义字符的意思了。具体可以查看下面的URL编码表
backspace %08
I %49
v %76
ó %D3
tab %09
J %4A
w %77
Ô %D4
linefeed %0A
K %4B
x %78
Õ %D5
creturn %0D
L %4C
y %79
Ö %D6
space %20
M %4D
z %7A
Ø %D8
! %21
N %4E
{ %7B
ù %D9
" %22
O %4F
| %7C
ú %DA
# %23
P %50
} %7D
Û %DB
$ %24
Q %51
~ %7E
ü %DC
% %25
R %52
¢ %A2
Y %DD
& %26
S %53
£ %A3
T %DE
' %27
T %54
¥ %A5
ß %DF
( %28
U %55
| %A6
à %E0
) %29
V %56
§ %A7
á %E1
* %2A
W %57
« %AB
a %E2
+ %2B
X %58
¬ %AC
ã %E3
, %2C
Y %59
ˉ %AD
ä %E4
- %2D
Z %5A
o %B0
å %E5
. %2E
[ %5B
± %B1
æ %E6
/ %2F
\ %5C
a %B2
ç %E7
0 %30
] %5D
, %B4
è %E8
1 %31
^ %5E
μ %B5
é %E9
2 %32
_ %5F
» %BB
ê %EA
3 %33
` %60
¼ %BC
ë %EB
4 %34
a %61
½ %BD
ì %EC
5 %35
b %62
¿ %BF
í %ED
6 %36
c %63
à %C0
î %EE
7 %37
d %64
á %C1
ï %EF
8 %38
e %65
 %C2
e %F0
9 %39
f %66
à %C3
ñ %F1
: %3A
g %67
Ä %C4
ò %F2
; %3B
h %68
Å %C5
ó %F3
< %3C
i %69
Æ %C6
ô %F4
= %3D
j %6A
Ç %C7
õ %F5
> %3E
k %6B
è %C8
ö %F6
%3F
l %6C
é %C9
÷ %F7
@ %40
m %6D
ê %CA
ø %F8
A %41
n %6E
Ë %CB
ù %F9
B %42
o %6F
ì %CC
ú %FA
C %43
p %70
í %CD
û %FB
D %44
q %71
Î %CE
ü %FC
E %45
r %72
Ï %CF
y %FD
F %46
s %73
D %D0
t %FE
G %47
t %74
Ñ %D1
ÿ %FF
H %48
u %75
ò %D2
查看了下相关资料,记录下备忘下URL编码规则:
URL编码遵循下列规则: 每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ASCII码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ASCII码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ASCII码是-17670,十六进制是BAFA,url编码是“%BA%FA”。
记得之前使用J2EE做web开发的时候,防SQL注入就常用URL的编码
谨以此文备忘。
0 0
- C++替换方法和URL转义字符
- java字符转义和替换
- URL中文转义和特殊字符处理
- split方法和转义字符
- url中转义转义字符
- url的转义字符
- url转义字符
- URL转义字符
- url转义字符
- url转义字符
- url转义字符
- Javascript URL 转义字符
- URL特殊字符转义
- 常见url转义字符
- URL特殊字符转义
- URL特殊字符转义
- URL转义字符
- url转义字符
- Android UI开发神兵利器之Android Action Bar Style Generator
- 爬虫关于非规则html处理
- winform Label与DataGridView右对齐
- 百度之星 1002 (动态规划,双调旅行商问题)
- 在控制台上输入一个字符串,将其中夹杂的字母去除,只剩数字,然后对对这些数字进行全排列,输出全排列结果
- C++替换方法和URL转义字符
- java学习对象笔记
- Mysql添加远程访问权限
- Add Binary
- 错误解析->“cvQueryHistValue_2D”: 找不到标识符
- 开启SSH服务,让安卓手机远程访问 Ubuntu 14.04
- Linux中的kill命令小结
- 2013年北京师范大学新生程序设计竞赛网络赛--D. Number theory(模拟取余)
- Matlab绘图-很详细,很全面