Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > url кодирование строки? Или нет?


Автор: mr_smit 15.10.2008, 17:16
Здравствуйте! Вопрос такой:

1. Заполняю форму в браузере и нажимаю "отправить" (www.qiq.ru)
2. Смотрю что отправляет браузер.

Пример:  вводим "Привет."

браузер отправляет параметр "post%5Btitle%5D" = "%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82."

post[title] - это имя строки со страницы (куда вводим "привет")

попробовал функцию для URL кодирования строки
http://www.kansoftware.ru/?tid=1528

она возвращает "%CF%F0%E8%E2%E5%F2%2E"

для HTTP кодирования строки
http://www.kansoftware.ru/?tid=2349

она возвращает "%CF%F0%E8%E2%E5%F2."

т.е. и близко не похоже.

Как браузер строку кодирует то?

Вот ещё несколько примеров от браузера:

а - %D0%B0   (русская "а")

ав  -  %D0%B0%D0%B2 (русские "ав")

р  -  %D1%80 (русская "р")

Автор: mr_smit 15.10.2008, 17:40
Кодировка на странице:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

А idHTTP сам может строку таким образом преобразовать?


Автор: Matematik 15.10.2008, 17:41
Алгоритм кодирования один
Только у тебя разные кодировки текста на сайтах
www.qiq.ru  - UTF8
http://www.kansoftware.ru/?tid=2349 - Windows-1251

см. ф-ции
Код

  AnsiToUtf8()
  Utf8ToAnsi()

URLDecode(AnsiToUtf8('привет'))='%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82'
URLDecode('привет')='%CF%F0%E8%E2%E5%F2%2E'



Автор: mr_smit 15.10.2008, 17:53
СПАСИБО ОГРОМНОЕ! Всё работает. smile 

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  S: string;
begin
  S:=HTTPEncode(AnsiToUtf8('Привет.'));
  memo1.Text:=s;
end;

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