Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 11:58   #1
Pasha_Sh
Форумчанин
 
Аватар для Pasha_Sh
 
Регистрация: 16.05.2010
Сообщений: 137
По умолчанию POST idHTTP

Когда отправляю сообщение, вместо русского текста знаки вопросов.
osu
Pasha_Sh вне форума Ответить с цитированием
Старый 10.06.2010, 15:04   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)попробуйте в HTTPOptions отключить ForceEncodeParams
2)попробуйте кодировать самостоятельно, я обычно брал параметры(кодированные) со сниффера
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.06.2010, 19:54   #3
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Delphi какая? Если 2009 и выше, то это проблема с кодировками. Обновите indy, а ещё лучше перейдите на Delphi 7.
Виталий Желтяков вне форума Ответить с цитированием
Старый 10.06.2010, 20:27   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Виталий Желтяков, к сожалению Д7 не выход.
самое лучшее это забить на автокодирование от компонента и кодировать самому.
принципы кодирования есть на википедии по запросу URL
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.06.2010, 23:02   #5
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию

Код:
function UrlEncode(const s: AnsiString): string;
var
  I: integer;
begin
  Result := '';
  for i := 1 to Length(S) do
    case S[i] of
      '%', ' ', '&', '=', '@', '.', #13, #10, #128..#255: Result := Result + '%'
        + IntToHex(Ord(S[i]), 2);
    else
      Result := Result + S[i];
    end;
end;
AquaKlaster вне форума Ответить с цитированием
Старый 10.06.2010, 23:13   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

она рабочая разве?
поидее по правилам URL кодирования, не так должно идти кодирование.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.06.2010, 23:13   #7
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию

Феникс я не даю функций которых сам не юзаю

вот немного другая. с поддержкой утф
Код:
function UrlEncode1(const s: string; NeedUTF8: Boolean = False): string;
var
  I: integer;
  W: UTF8String;
begin
  Result := '';
  if NeedUTF8 then
    W := UTF8Encode(S)
  else
    W := S;
  for i := 1 to Length(W) do
    case W[i] of
      '%', ' ', '&', '=', '@', '.', #13, #10, #128..#255: Result := Result + '%'
        + IntToHex(Ord(W[i]), 2);
    else
      Result := Result + W[i];
    end;
end;

Последний раз редактировалось Stilet; 11.06.2010 в 09:10.
AquaKlaster вне форума Ответить с цитированием
Старый 11.06.2010, 09:00   #8
Pasha_Sh
Форумчанин
 
Аватар для Pasha_Sh
 
Регистрация: 16.05.2010
Сообщений: 137
По умолчанию

Цитата:
Сообщение от AquaKlaster Посмотреть сообщение
вот немного другая. с поддержкой утф
Код:
function UrlEncode1(const s: string; NeedUTF8: Boolean = False): string;
var
  I: integer;
  W: UTF8String;
begin
  Result := '';
  if NeedUTF8 then
    W := UTF8Encode(S)
  else
    W := S;
  for i := 1 to Length(W) do
    case W[i] of
      '%', ' ', '&', '=', '@', '.', #13, #10, #128..#255: Result := Result + '%'
        + IntToHex(Ord(W[i]), 2);
    else
      Result := Result + W[i];
    end;
end;
Спасибо, работает!
Но при GET запросе тоже абра кадабра. Как её убрать?
osu

Последний раз редактировалось Pasha_Sh; 11.06.2010 в 09:18.
Pasha_Sh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IdHTTP.POST Проблема с кодировкой Could Работа с сетью в Delphi 4 13.05.2010 19:27
IdHTTP Редирект! Методом GET, а не POST AquaKlaster Работа с сетью в Delphi 3 12.12.2009 20:37
IdHTTP.Post(); method not allowed rangel Работа с сетью в Delphi 3 01.11.2009 16:56
Получить hash (idhttp post) Lime Работа с сетью в Delphi 1 18.09.2009 08:35
idHTTP GET и POST запросы FAiver Работа с сетью в Delphi 64 15.05.2008 13:22