C++ URL encode/decode (gb2312)
2015-03-30 15:30
218 查看
char Dec2HexChar(short int n) { if ( 0 <= n && n <= 9 ) { return char( short('0') + n ); } else if ( 10 <= n && n <= 15 ) { return char( short('A') + n - 10 ); } else { return char(0); } } short int HexChar2Dec(char c) { if ( '0'<=c && c<='9' ) { return short(c-'0'); } else if ( 'a'<=c && c<='f' ) { return ( short(c-'a') + 10 ); } else if ( 'A'<=c && c<='F' ) { return ( short(c-'A') + 10 ); } else { return -1; } } string EncodeURL(const string &URL) { string strResult = ""; for ( unsigned int i=0; i<URL.size(); i++ ) { char c = URL[i]; if ( ( '0'<=c && c<='9' ) || ( 'a'<=c && c<='z' ) || ( 'A'<=c && c<='Z' ) || c=='/' || c=='.' ) { strResult += c; } else { int j = (short int)c; if ( j < 0 ) { j += 256; } int i1, i0; i1 = j / 16; i0 = j - i1*16; strResult += '%'; strResult += Dec2HexChar(i1); strResult += Dec2HexChar(i0); } } return strResult; } std::string DecodeURL(const std::string &URL) { string result = ""; for ( unsigned int i=0; i<URL.size(); i++ ) { char c = URL[i]; if ( c != '%' ) { result += c; } else { char c1 = URL[++i]; char c0 = URL[++i]; int num = 0; num += HexChar2Dec(c1) * 16 + HexChar2Dec(c0); result += char(num); } } return result; }
相关文章推荐
- C++ URL encode/decode (gb2312)
- URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)
- encodeURIComponent编码 URLDecoder.decode解码乱码的问题
- JavaEE/JavaSE Java中的URL Encode / Decode
- 字符编码和python使用encode,decode转换utf-8, gbk, gb2312
- URL Decode & Encode
- URL解码(Decode)/编码(Encode)
- URL解码(Decode)/编码(Encode)
- 【LeetCode】535. Encode and Decode TinyURL
- JS的encodeURI和java的URLDecoder.decode使用介绍
- URLEncoder.encode(str,"编码") new URLDecoder().decode(str,"编码")
- JS的encodeURI和java的URLDecoder.decode使用介绍
- Encode and Decode TinyURL
- iOS中URL的encode和decode
- leetcode题解-535. Encode and Decode TinyURL
- 如何 Encode 和 Decode URL 地址?
- 20170613-leetcode-535-Encode and Decode TinyURL
- URL解码(Decode)/编码(Encode)
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL