问题:
在解析客户端发送过来的URL时,发现查询字符串中的空格被编码成了%20,查阅相关资料发现根据不同的规定,空格可能被编码为‘+’或%20
相关资料
W3C标准规定,当Content-Type为application/x-www-form-urlencoded时,URL中查询参数名和参数值中空格要用加号+替代,所以几乎所有使用该规范的浏览器在表单提交后,URL查询参数中空格都会被编成加号+。而在另一份规范(RFC 2396,定义URI)里, URI里的保留字符都需转义成%HH格式(Section 3.4 Query Component),因此空格会被编码成%20
解决办法
只能将收到的字符串的’+'或%20换成空格
int x, y;
for(x = 0, y = 0; re_time[y]; x++, y++){
if(re_time[y] == '+')
re_time[x] = ' ';
else if(re_time[y] == '%'){
if(!(re_time[y+1]&&re_time[y+2]))
break;
re_time[x] = ' ';
y += 2;
}
else
re_time[x] = re_time[y];
}
re_time[x] = '\0';