資源簡介
在網(wǎng)上找到的一些url編碼和解碼的代碼,自己整理了一下,拿來就可是用。
代碼片段和文件信息
/*****************************************************************************
Module?:?????URLEncode.cpp
Notices:?????Written?2002?by?ChandraSekar?Vuppalapati
Description:?CPP?URL?Encoder
*****************************************************************************/
#define?_CRTDBG_MAP_ALLOC
#include?“stdafx.h“
#include?
//#include?
//#include?
//#include?
//#include?
//#include?
//#include?
#include?“URLEncode.h“
#define?MAX_BUFFER_SIZE?4096
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif
//#include?
//#include?
//?HEX?Values?array
char?hexVals[16]?=?{‘0‘‘1‘‘2‘‘3‘‘4‘‘5‘‘6‘‘7‘‘8‘‘9‘‘A‘‘B‘‘C‘‘D‘‘E‘‘F‘};
//?UNSAFE?String
string?CURLEncode::strUnsafeString?=?“\“<>%\\^[]‘+$@:;/!#?=&“;
//?PURPOSE?OF?THIS?FUNCTION?IS?TO?CONVERT?A?GIVEN?CHAR?TO?URL?HEX?FORM
string?CURLEncode::convert(char?val)?
{
string?strRet;
strRet?+=?“%“;
strRet?+=?decToHex(val?16);
return??strRet;
}
//?THIS?IS?A?HELPER?FUNCTION.
//?PURPOSE?OF?THIS?FUNCTION?IS?TO?GENERATE?A?HEX?REPRESENTATION?OF?GIVEN?CHARACTER
string?CURLEncode::decToHex(char?num?int?radix)
{
int?temp=0;
string??strTmp;
int?num_char;
num_char?=?(int)?num;
//?ISO-8859-1?
//?IF?THE?IF?LOOP?IS?COMMENTED?THE?CODE?WILL?FAIL?TO?GENERATE?A?
//?PROPER?URL?ENCODE?FOR?THE?CHARACTERS?WHOSE?RANGE?IN?127-255(DECIMAL)
if?(num_char?0)
num_char?=?256?+?num_char;
while?(num_char?>=?radix)
{
temp?=?num_char?%?radix;
double?l?=?num_char?/?radix;
num_char?=?(int)floor(l);
strTmp?=?hexVals[temp];
}
strTmp?+=?hexVals[num_char];
if(strTmp.length()?2)
{
strTmp?+=?‘0‘;
}
string?strdecToHex(strTmp.rbegin()strTmp.rend());
//?Reverse?the?String
//strdecToHex.MakeReverse();?
return?strdecToHex;
}
//?PURPOSE?OF?THIS?FUNCTION?IS?TO?CHECK?TO?SEE?IF?A?CHAR?IS?URL?UNSAFE.
//?TRUE?=?UNSAFE?FALSE?=?SAFE
bool?CURLEncode::isUnsafe(char?compareChar)
{
bool?bcharfound?=?false;
char?tmpsafeChar;
int?m_strLen?=?0;
m_strLen?=?strUnsafeString.length();
for(int?ichar_pos?=?0;?ichar_pos? {
tmpsafeChar?=?strUnsafeString[ichar_pos];?
if(tmpsafeChar?==?compareChar)
{?
bcharfound?=?true;
break;
}?
}
int?char_ascii_value?=?0;
//char_ascii_value?=?__toascii(compareChar);
char_ascii_value?=?(int)?compareChar;
if(bcharfound?==?false?&&??char_ascii_value?>?32?&&?char_ascii_value?123)
{
return?false;
}
////?found?no?unsafe?chars?return?false
//else
//{
// return?true;
//}
//
return?true;
}
//?PURPOSE?OF?THIS?FUNCTION?IS?TO?CONVERT?A?STRING?
//?TO?URL?ENCODE?FORM.
string?CURLEncode::URLEncode_GBK(const?char??*?szUrl)
{
int?ichar_pos;
//string?Encode;
string?Encoded;
int?m_length;
int?ascii_value;
//Encode?=?const?char??*?szUrl;
m_length?=?strlen(szUrl);
for(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7014??2012-05-10?13:42??URLEncode.cpp
?????文件????????825??2012-05-10?11:15??URLEncode.h
-----------?---------??----------?-----??----
?????????????????7839????????????????????2
評論
共有 條評論