Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> idhttpserver и русскоязычный url 
:(
    Опции темы
cyberovskij
Дата 17.3.2011, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



Если дать запрос на idhttpserver www.myserv.com/страница1.html то в свойстве ARequestInfo.Document в обработчике  OnCommandGet получается крякозябленный текст. Как получить читаемую строку?
PM MAIL   Вверх
z-END
Дата 17.3.2011, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 1
Всего: 102



видимо потому что utf-8?


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
cyberovskij
Дата 17.3.2011, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



Цитата(z-END @ 17.3.2011,  19:32)
видимо потому что utf-8?

 smile я тоже так думаю что здесь проблема как-то   связана с utf-8. Вопрос в том как?
PM MAIL   Вверх
Snowy
Дата 18.3.2011, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Ты сначала покажи строку.
Откель нам знать, что у тебя там не так...
PM MAIL   Вверх
Akella
Дата 20.3.2011, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



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&
PM MAIL   Вверх
cyberovskij
Дата 24.3.2011, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



Цитата(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 в нужную кодировку
PM MAIL   Вверх
Snowy
Дата 25.3.2011, 11:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Ну вот так бы и сразу.
Ня: http://forum.vingrad.ru/index.php?showtopi...t&p=2268376
А то "крякозяблики", понимаете ли, бывают разные.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0743 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.