Русские символы в Post запросе[Delphi]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Artist, 15 Aug 2010.

  1. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0
    Отправляю пост запрос на авторизацию.
    Если в пароле есть русские символы то авторизация не происходит, хотя в снифере пароль нормально ображается.
    Если сделать так AnsiToUtf8(password), то в снифера вместо пароля будут иероглифы
    Если сделать так Utf8ToAnsi(password), то в снифера вместо пароля будет пустая строка.
    Если использую цифры или латинские буквы то авторизация происходит нормально.
    Как нормально отправить русский пароль чтоб была авторизация?
     
  2. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    UrlEncode :)
     
  3. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0
    а подробней можно.
    как я понимаю эту функцию нужно самомоу написать?
     
  4. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    PHP:
    //Использовать Type=true - если кодировать предварительно символы в UTF8
    //Использовать Type=false - если не нужно предварительно кодировать символы в UTF8
    void char_to_url(char *Sourcechar *Destbool Type)
    {
    //---------
    UTF8String S;
    if(
    Type)
    UTF8Encode(Source);
    else
    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=0lenx++)
    {
    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(Destch);
    }
    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(Destbf);
    };
    /*End of SWITCH*/
    }
    ptr++;
    }
    }
     
  5. kakeolala

    kakeolala Banned

    Joined:
    13 Jul 2010
    Messages:
    118
    Likes Received:
    2
    Reputations:
    0
    я так понимаю ты на дельфи 7 - если ты собрался тесно работать с инетовскими штуками то лудше качай новый дельфин
     
  6. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0
    Новый это типо кодгеар 2010? и что там таких проблемм нету?
     
  7. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Там все строки юникодовые теперь :)