您好,欢迎来到外链网!
当前位置:外链网 » 站长资讯 » 专业问答 » 文章详细 订阅RssFeed

js urlencode编码,urlencode编码怎么使用

来源:互联网 浏览:62次 时间:2023-04-08
编码规则

1)不会被编码的内容

大写字母A-Z
小写字母a-z
数字 0-9
标点符 - _ . ~

2)空格全部替换为加号("+")

3)将需要转换的内容,用十六进制表示法转换出来,并在之前加上%开头

+ 编码后:%2b
? 编码后:%3f
傻 (中文)编码后:%e5%82%bb

#include <string>#include <iostream>#include <assert.h>unsigned char ToHex(unsigned char x) { return x > 9 ? x + 55 : x + 48; } unsigned char FromHex(unsigned char x) { unsigned char y; if (x >= 'A' && x <= 'Z') y = x - 'A' + 10; else if (x >= 'a' && x <= 'z') y = x - 'a' + 10; else if (x >= '0' && x <= '9') y = x - '0'; else assert(0); return y;} std::string UrlEncode(const std::string& str){ std::string strTemp = ""; size_t length = str.length(); for (size_t i = 0; i < length; i++) { if (isalnum((unsigned char)str[i]) || (str[i] == '-') || (str[i] == '_') || (str[i] == '.') || (str[i] == '~')) strTemp += str[i]; else if (str[i] == ' ') strTemp += "+"; else { strTemp += '%'; strTemp += ToHex((unsigned char)str[i] >> 4); strTemp += ToHex((unsigned char)str[i] % 16); } } return strTemp;} std::string UrlDecode(const std::string& str){ std::string strTemp = ""; size_t length = str.length(); for (size_t i = 0; i < length; i++) { if (str[i] == '+') strTemp += ' '; else if (str[i] == '%') { assert(i + 2 < length); unsigned char high = FromHex((unsigned char)str[++i]); unsigned char low = FromHex((unsigned char)str[++i]); strTemp += high*16 + low; } else strTemp += str[i]; } return strTemp;} 49092668