Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Кодировки в URL


Автор: z-END 13.6.2004, 13:16
Имеются ref's с поисковиков откуда пришел посититель
1.Яndex все просто:
Цитата
http://www.yandex.ru/yandsearch?text=%EF%EE%EC%EE%E3%E8%F2%E5+%EC%ED%E5&stype=www&rpt=rad
где text=%EF%EE%EC%EE%E3%E8%F2%E5+%EC%ED%E5 представляет собой шеснадцитиричное значение символа тока вместо "$" используется "%", а вместо пробела "+", но все это касается только первой страницы поиска...
2 на следующих старницах формат уж сложнее:
Цитата
http://www.yandex.ru/yandpage?q=224959280&p=6&ag=d&qs=text%3D%25D0%25CF%25CD%25CF%25C7%25C9%25D4%25C5%2B%25CD%25CE%25C5%26stype%3Dwww%26rpt%3Drad
здесь текст заданный пользователем хранится в таком виде:
qs=text%3D%25D0%25CF%25CD%25CF%25C7%25C9%25D4%25C5%2B%25CD%25CE%25C5%26 где после слова text идет такая последовательность(после перевода Chr($XX)):=РПНПЗЙФЕ+НОЕ& что представляет собой введенную пользователем но уже в KOI8 кодировке...
3. Google приблизительно такого вида:
Цитата
http://www.google.ru/search?hl=ru&ie=UTF-8&q=%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B8%D1%82%D0%B5+%D0%BC%D0%BD%D0%B5&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=
где q=%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B8%D1%82%D0%B5+%D0%BC%D0%BD%D0%B5 есть текст набранный пользователем, но если его просто перевести Chr($..) то нифига невыходит, если приглядется то видно что Гугла UTF кодировка...

Вопрос: Как реализовать перевод KOI8,UTF в вид читаемый в Winдах?!
ЗЫ Может есть еще более простой вариант перевода этих строк?! мож ф-ция какая есть, хелп ме если знаете

Автор: _hunter 14.6.2004, 16:38
WideToAnsi / CharToOem

Автор: Гость_Dan 5.1.2005, 02:51
{ **** UBPFD *********** by delphibase.endimus.ru ****
>> URL декодирование строки

Функция выполняет URL декодирование строки, заменяя все подстроки вида '%HH', где 'HH' - шестнадцатеричные цифры, на соответствующие символы.

Зависимости: Windows
Автор: Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright: Dimka Maslov
Дата: 27 мая 2002 г.
**************************************************** }

function UrlDecode(Str: string): string;

function HexToChar(W: word): Char;
asm
cmp ah, 030h
jl @@error
cmp ah, 039h
jg @@10
sub ah, 30h
jmp @@30
@@10:
cmp ah, 041h
jl @@error
cmp ah, 046h
jg @@20
sub ah, 041h
add ah, 00Ah
jmp @@30
@@20:
cmp ah, 061h
jl @@error
cmp al, 066h
jg @@error
sub ah, 061h
add ah, 00Ah
@@30:
cmp al, 030h
jl @@error
cmp al, 039h
jg @@40
sub al, 030h
jmp @@60
@@40:
cmp al, 041h
jl @@error
cmp al, 046h
jg @@50
sub al, 041h
add al, 00Ah
jmp @@60
@@50:
cmp al, 061h
jl @@error
cmp al, 066h
jg @@error
sub al, 061h
add al, 00Ah
@@60:
shl al, 4
or al, ah
ret
@@error:
xor al, al
end;

function GetCh(P: PChar; var Ch: Char): Char;
begin
Ch:=P^;
Result:=Ch;
end;

var
P: PChar;
Ch: Char;
begin
Result:='';
P:=@Str[1];
while GetCh(P, Ch) <> #0 do begin
case Ch of
'+': Result:=Result+' ';
'%': begin
Inc(P);
Result:=Result+HexToChar(PWord(P)^);
Inc(P);
end;
else Result:=Result+Ch;
end;
Inc(P);
end;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)