URL을 인코딩/디코딩 하는 함수를 만들어 봤습니다.
URL Encoding
URL Decoding
SAMPLE 프로젝트
URL Encoding
char *URLencpy(char *enc, char *src)
{
char buf[2+1];
int i, j;
unsigned char c;
if(src==0||enc==0) return 0;
for(i=j= 0; src[i]; i++)
{
c = (unsigned char)src[i];
if (c == ' ') enc[j++] = '+';
if ((c >= '0') && (c <= '9')) enc[j++] = c;
else if ((c >= 'A') && (c <= 'Z')) enc[j++] = c;
else if ((c >= 'a') && (c <= 'z')) enc[j++] = c;
else if ((c == '@') || (c == '.')) enc[j++] = c;
else {
sprintf(buf, "%02x", c);
enc[j++] = '%';
enc[j++] = buf[0];
enc[j++] = buf[1];
}
}
enc[j] = '\0';
return enc;
}
{
char buf[2+1];
int i, j;
unsigned char c;
if(src==0||enc==0) return 0;
for(i=j= 0; src[i]; i++)
{
c = (unsigned char)src[i];
if (c == ' ') enc[j++] = '+';
if ((c >= '0') && (c <= '9')) enc[j++] = c;
else if ((c >= 'A') && (c <= 'Z')) enc[j++] = c;
else if ((c >= 'a') && (c <= 'z')) enc[j++] = c;
else if ((c == '@') || (c == '.')) enc[j++] = c;
else {
sprintf(buf, "%02x", c);
enc[j++] = '%';
enc[j++] = buf[0];
enc[j++] = buf[1];
}
}
enc[j] = '\0';
return enc;
}
URL Decoding
char *URLdecpy(char *dec, char *src)
{
int i, j;
unsigned char c=0;
if(src==0 || dec==0) return 0;
for(i=j=0; src[i]; i++,j++)
{
if(src[i] == '+')
{
dec[j] = ' ';
continue;
}
dec[j] = src[i];
if(src[i] != '%') continue;
c = src[++i];
if(c >= '0' && c <= '9') dec[j] = c - '0';
else if(c >= 'A' && c <= 'F') dec[j] = c - 55;
else if(c >= 'a' && c <= 'f') dec[j] = c - 87;
else return 0;
c = src[++i];
dec[j] *= 16;
if(c >= '0' && c <= '9') dec[j] += (c - '0');
else if(c >= 'A' && c <= 'F') dec[j] += (c - 55);
else if(c >= 'a' && c <= 'f') dec[j] += (c - 87);
else return 0;
}
dec[j] = '\0';
return dec;
}
{
int i, j;
unsigned char c=0;
if(src==0 || dec==0) return 0;
for(i=j=0; src[i]; i++,j++)
{
if(src[i] == '+')
{
dec[j] = ' ';
continue;
}
dec[j] = src[i];
if(src[i] != '%') continue;
c = src[++i];
if(c >= '0' && c <= '9') dec[j] = c - '0';
else if(c >= 'A' && c <= 'F') dec[j] = c - 55;
else if(c >= 'a' && c <= 'f') dec[j] = c - 87;
else return 0;
c = src[++i];
dec[j] *= 16;
if(c >= '0' && c <= '9') dec[j] += (c - '0');
else if(c >= 'A' && c <= 'F') dec[j] += (c - 55);
else if(c >= 'a' && c <= 'f') dec[j] += (c - 87);
else return 0;
}
dec[j] = '\0';
return dec;
}
SAMPLE 프로젝트
반응형
'Dev > C, C++' 카테고리의 다른 글
xor을 이용한 swap 함수 (0) | 2007.08.09 |
---|---|
socket connect timeout (2) | 2007.05.29 |
Registry 읽고 쓰기 재활용 (0) | 2007.03.31 |
애플리케이션 개발시의 메모리 디버깅 : 메모리 누수 발견 기법 (0) | 2007.03.19 |
http socket client (0) | 2006.11.23 |