| Цитата(Akella @ 20.3.2011, 10:58) | urlencode/urldecode?
Добавлено @ 11:05
| Код | function UrlEncode(Str: string): string;
function CharToHex(Ch: Char): Integer; asm and eax, 0FFh mov ah, al shr al, 4 and ah, 00fh cmp al, 00ah jl @@10 sub al, 00ah add al, 041h jmp @@20 @@10: add al, 030h @@20: cmp ah, 00ah jl @@30 sub ah, 00ah add ah, 041h jmp @@40 @@30: add ah, 030h @@40: shl eax, 8 mov al, '%' end;
var i, Len: Integer; Ch: Char; N: Integer; P: PChar; begin Result := ''; Len := Length(Str); P := PChar(@N); for i := 1 to Len do begin Ch := Str[i]; if Ch in ['0'..'9', 'A'..'Z', 'a'..'z', '_', '/'] then Result := Result + Ch else begin if Ch = ' ' then Result := Result + '+' else begin N := CharToHex(Ch); Result := Result + P; end; end; end; end;
|
| Код | idHttp1.Get(UrlEncode(AnsiToUtf8('http://www.myserv.com/страница1.html ')));
|
серверу ты передашь адрес примерно в таком виде: http://www.google.com.ua/#sclient=psy&hl=ru&q=%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B01& |
я так понял что весь приведенный код должен работать на клиентской стороне? Дело в том что запрос посылается из bho для интернет експлорера. Этот bho реализован на MS VС++. Если это прояснит суть вопроса то я могу его выложить. А вот на серверной стороне работает idhttp сервер. Ему как раз и поступают строки в 8-и битной кодировке в виде шестнадцатеричной записи "%XX". Скорее всего мне нужна функция декодирования, которая делает преобразование из шестнадцатеричной записи "%XX в нужную кодировку |