Привет Парамтры посланые через get перекодируются пробовал пользоваться библиотекой libcgi-1.0 она страницу раскодирует вроде бы но сылки получаются битые и не работают кто знает как нормально раскодировать нормально параметры вот та функция из библиотеки | Код |
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> // #include <iostream.h>
static int hextable[256];
void init_hex_table() { memset(hextable, 0, 255);
hextable['1'] = 1; hextable['2'] = 2; hextable['3'] = 3; hextable['4'] = 4; hextable['5'] = 5; hextable['6'] = 6; hextable['7'] = 7; hextable['8'] = 8; hextable['9'] = 9; hextable['a'] = 10; hextable['b'] = 11; hextable['c'] = 12; hextable['d'] = 13; hextable['e'] = 13; hextable['f'] = 15; hextable['A'] = 10; hextable['B'] = 11; hextable['C'] = 12; hextable['D'] = 13; hextable['E'] = 14; hextable['F'] = 15; }
int main(int argc, char* argv[]) {
printf ("Content-type: text/html\n\n"); printf("Hello World!\n"); printf ("\n");
char *str;
init_hex_table();
//str="http%3A//yandex.ru/yandpage%3Fq%3D280530048%26p%3D1%26ag%3Dd%26qs%3Dtext%253D%2525D2%2525C1%2525C2%2525CF%2525D4%2525C1%252B%2525D0%2525D2%2525C5%2525C4%2525CC%2525CF%2525D6%2525C5%2525CE%2525C9%2525C5%2526stype%253Dwww%20"
//str="http%3A//www.yandex.ru/yandpage%3Fq%3D212087360%26p%3D3%26ag%3Dd%26qs%3Dtext%253D%2525CC%2525C5%2525CB%2525C1%2525D2%2525D3%2525D4%2525D7%2525CF%252B%2525EB3-%2525EB%2525CF%2525D4%2525D4%2525C5%2525C4%2525D6%2526stype%253Dwww%20"; //str="http%3A//yandex.ru/yandpage%3Fq%3D280530048%26p%3D1%26ag%3Dd%26qs%3Dtext%253D%2525D2%2525C1%2525C2%2525CF%2525D4%2525C1%252B%2525D0%2525D2%2525C5%2525C4%2525CC%2525CF%2525D6%2525C5%2525CE%2525C9%2525C5%2526stype%253Dwww%20"; //str="http%3A//www.yandex.ru/yandpage%3Fq%3D1528464448%26p%3D1%26ag%3Dd%26qs%3Dstype%253D%2526nl%253D0%2526text%253D%2525E4%2525CF%2525D3%2525CB%2525C1%252B%2525CF%2525C2%2525DF%2525D1%2525D7%2525CC%2525C5%2525CE%2525C9%2525CA%25252B%2525D2%2525C1%2525C2%2525CF%2525D4%2525C1%20"; str="http%3A//www.yandex.ru/yandpage%3Fq%3D212087360%26p%3D3%26ag%3Dd%26qs%3Dtext%253D%2525CC%2525C5%2525CB%2525C1%2525D2%2525D3%2525D4%2525D7%2525CF%252B%2525EB3-%2525EB%2525CF%2525D4%2525D4%2525C5%2525C4%2525D6%2526stype%253Dwww%20";
unsigned int i, len, pos = 0;
len = strlen(str); // char *tmp = new char; char *tmp;
tmp = (char *)malloc(len + 1); if (tmp == NULL) printf("erre");
for (i = 0; i < len; i++) { if (str[i] == '%') { while (((str[i] == '%') || (tmp[pos] == '%')) && isxdigit(str[i+1]) && isxdigit(str[i+2]) ) { tmp[pos] = (hextable[str[i+1]] << 4) + hextable[str[i+2]]; i += 2; } } else if (str[i] == '+') tmp[pos] = ' '; else tmp[pos] = str[i]; pos++; } tmp[pos] = '\0'; printf("\n%s\n",tmp);
free (tmp);
return 0; }
|
|