Отправляю пост запрос на авторизацию. Если в пароле есть русские символы то авторизация не происходит, хотя в снифере пароль нормально ображается. Если сделать так AnsiToUtf8(password), то в снифера вместо пароля будут иероглифы Если сделать так Utf8ToAnsi(password), то в снифера вместо пароля будет пустая строка. Если использую цифры или латинские буквы то авторизация происходит нормально. Как нормально отправить русский пароль чтоб была авторизация?
PHP: //Использовать Type=true - если кодировать предварительно символы в UTF8 //Использовать Type=false - если не нужно предварительно кодировать символы в UTF8 void char_to_url(char *Source, char *Dest, bool Type) { //--------- UTF8String S; if(Type) S = UTF8Encode(Source); else S = Source; //--------- char buff[20], bf[20]; char *ptr = (char *)S.c_str(); char ch[10]; size_t len = strlen(ptr); Dest[0] =0; for(size_t x=0; x < len; x++) { if(*ptr == '\r') { ptr++; continue; } else if((*ptr >= 'A' && *ptr <= 'Z') || (*ptr >= 'a' && *ptr <= 'z') || *ptr =='*' || *ptr =='@' || *ptr =='.' || *ptr =='_' || *ptr =='-' || (*ptr >='0' && *ptr <='9')) { sprintf(ch, "%c\0", *ptr); strcat(Dest, ch); } else { switch (*ptr) { case '\n': strcat(Dest, "%0D%0A\0"); break; case '"': strcat(Dest, "%22\0"); break; case '#': strcat(Dest, "%23\0"); break; case '~': strcat(Dest, "~\0"); break; case '%': strcat(Dest, "%25\0"); break; case '&': strcat(Dest, "%26\0"); break; case '\'': strcat(Dest, "%27\0"); break; case '*': strcat(Dest, "%2a\0"); break; case ',': strcat(Dest, "%2c\0"); break; case ':': strcat(Dest, "%3a\0"); break; case ';': strcat(Dest, "%3b\0"); break; case '<': strcat(Dest, "%3c\0"); break; case '>': strcat(Dest, "%3e\0"); break; case '?': strcat(Dest, "%3f\0"); break; case '[': strcat(Dest, "%5b\0"); break; case ']': strcat(Dest, "%5d\0"); break; case '^': strcat(Dest, "%5e\0"); break; case '`': strcat(Dest, "%60\0"); break; case '{': strcat(Dest, "%7b\0"); break; case '|': strcat(Dest, "%7c\0"); break; case '}': strcat(Dest, "%7d\0"); break; case ' ': strcat(Dest, "%20\0"); break; case '(': strcat(Dest, "%28\0"); break; case ')': strcat(Dest, "%29\0"); break; case '!': strcat(Dest, "%21\0"); break; case '+': strcat(Dest, "%2B\0"); break; case '$': strcat(Dest, "%24\0"); break; case '=': strcat(Dest, "%3D\0"); break; case '\\': strcat(Dest, "%5C\0"); break; case '/': strcat(Dest, "%2F\0"); break; default: sprintf(buff, "%x\0", *ptr); //sprintf(buff, "%.2x\0", *ptr); sprintf(bf, "%%%s\0", &buff[6]); strcat(Dest, bf); };/*End of SWITCH*/ } ptr++; } }
я так понимаю ты на дельфи 7 - если ты собрался тесно работать с инетовскими штуками то лудше качай новый дельфин