url编解码小记 (url_encode, url_decode)
2011-12-09 14:03
579 查看
原理:为了方便url传输过程中的可识别程度,主要分为两块进行,一块是可识别标准字符,一块是特殊字符及其它多字节, 对于可识别的不变动, 对于不可识别的只进行了转16进制操作再利用相应的规则进行拼接显示。
方法:
方法:
//URL编解码 inline unsigned char to_hex(const unsigned char &x) { return x > 9 ? x + 55: x + 48; } inline unsigned char from_hex(const unsigned char &x) { return isdigit(x) ? x-'0' : x-'A'+10; } inline std::string url_encode(const std::string &in ) { std::string out; for( size_t ix = 0; ix < in.size(); ix++ ) { unsigned char buf[4]; memset( buf, 0, 4 ); if( isalnum( (unsigned char)in[ix] ) ){ buf[0] = in[ix]; } else { buf[0] = '%'; buf[1] = to_hex( (unsigned char)in[ix] >> 4 ); buf[2] = to_hex( (unsigned char)in[ix] % 16); } out += (char *)buf; } return out; } inline std::string url_decode(const std::string &in) { std::string out; for( size_t ix = 0; ix < in.size(); ix++ ) { unsigned char ch = 0; if(in[ix]=='%') { ch = (from_hex(in[ix+1])<<4); ch |= from_hex(in[ix+2]); ix += 2; } else { ch = in[ix]; } out += (char)ch; } return out; }
相关文章推荐
- HttpUtility.UrlDecode(),HttpUtility()escape()、encodeURI()、encodeURIComponent()区别详解以及相应的前台解码和.net后台解码
- encodeURIComponent编码 URLDecoder.decode解码乱码的问题
- [LeetCode] Encode and Decode TinyURL 编码和解码精简URL地址
- URL解码(Decode)/编码(Encode)
- JS中encodeURIComponent(URL)编码与decodeURIComponent(URL)解码详解
- URL解码(Decode)/编码(Encode)
- URL解码(Decode)/编码(Encode)
- 解决JSP_url参数中文乱码及用JS_javascirpt编码js实现encode后台JSP_解码decode的实现
- JavaScript实现的base62 encode/decode,用于页面上直接对作为参数传递的url本身的编码和解码。
- URL解码(Decode)/编码(Encode)
- encodeURIComponent编码 URLDecoder.decode解码乱码的问题
- JS中encodeURIComponent(URL)编码与decodeURIComponent(URL)解码详解
- java.net.URLEncoder和java.net.URLDecoder的使用和js 中编码(encode)和解码(decode)方法
- encodeURIComponent编码 URLDecoder.decode解码乱码的问题
- 关于URL的encode和decode
- JS的encodeURI和java的URLDecoder.decode使用介绍
- JS Encode and Decode URL
- Objective-C url encode/decode url加密解密
- Java正确URL解码方式:URLDecoder.decode
- http get 请求地址传中文或值带特殊符号解决方法 URLEncoder.encode(str,"编码") new URLDecoder().decode(str,"编码")