Indy добавляет = на каждый 72-й символ с данными формы Multi Part - PullRequest
3 голосов
/ 25 августа 2011

С Delphi XE и Indy я получил некоторый код, который отправляется в веб-форму.

idhttp := TidHttp.create;
postData := TIdMultiPartFormDataStream.Create;
try
    postData.AddFormField('name', edName.text);
    postData.AddFormField('email', edEmail.txt);
    postData.AddFormField('description', mDescription.text);

    idhttp.Request.ContentType := 'Content-Type: multipart/form-data; boundary=' + postData.Boundary;
    idhttp.fHttp.Post('http://www.example.com/contact.php', postData);

    ShowMessage('Thank you for your contact us.');
finally
    postData.Free;
    idHttp.Free;
end;

Однако, когда я ввожу что-то подобное в памятке описания.

This is a really long descriptie piece of text so we can see just how it's wrapping these lines and what it's doig to them I think it's making a hash of it.

Argh waht a pain.

Я получаю

This is a really long descriptie piece of text so we can see just how =
it's wrapping these lines and what it's doig to them I think it's maki=
ng a hash of it.

Argh waht a pain.

Так что для меня это словесное завершение, с = Кто-нибудь с какими-нибудь подсказками?

Ответы [ 2 ]

7 голосов
/ 25 августа 2011

То, что вы видите, является правильным поведением.Свойство TIdFormDataField.ContentTransfer по умолчанию равно quoted-printable для текстовых полей.Это именно тот тип кодировки, который вы видите генерируемым.В quoted-printable единственный символ =, за которым следует разрыв строки, называется «мягким» разрывом.Именно так MIME разбивает длинные строки текста, чтобы соответствовать ограничениям длины строк в различных протоколах, таких как электронная почта.

Вы можете изменить свойство ContentTransfer на любое из следующих поддерживаемых значений:

  • пустая строка
  • 7bit
  • 8bit
  • binary
  • quoted-printable
  • base64

Если вы не хотите, чтобы ваш текст кодировался, задайте для свойства ContentTransfer любое из значений, отличных от quoted-printable или base64.

1 голос
/ 25 августа 2011

Это кодирует материал как цитируемый для печати. Вы должны расшифровать его перед отображением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...