Delphi Indy用Cyrillic发送POST数据

时间:2011-07-19 15:58:04

标签: delphi post send indy

我想使用indy 10使用delphi发送西里尔语的帖子数据。 好吧我知道如何发送数据但是当我发送书面或西里尔文时,后期数据响应带有一些编码符号。 有我的代码

  http := TIDHttp.Create(nil);
  http.HandleRedirects := true;
  http.ReadTimeout := 5000;
  http.Request.ContentType:='multipart/form-data';
  param:=TIdMultiPartFormDataStream.Create;
  param.AddFormField('com','offers');
  param.AddFormField('op','new');
  param.AddFormField('MAX_FILE_SIZE','1048576');
  param.AddFormField('offer[secid]','34');
  param.AddFormField('offer[fullname]',UserArray[0], 'utf-8');
  param.AddFormField('offer[email]',UserArray[1]);
  param.AddFormField('offer[phone]',UserArray[2]);
  param.AddFormField('offer[url]',UserArray[4]);
  param.AddFormField('offer[city]','София', 'utf-8');
  param.AddFormField('offer[offer_buysell]','sell');
  param.AddFormField('offer[catid]','95');
  param.AddFormField('offer[title]',AdArray[0], 'utf-8');

  param.AddFile( 'image[0]', AdArray[3], 'image/jpeg' );

  param.AddFormField('offer[description]',AdArray[1], 'utf-8');
  param.AddFormField('offer[price]',AdArray[2]);
  param.AddFormField('offer[offer_end]','180');
  param.AddFormField('offer[email_onquestion]','1');
  param.AddFormField('iagree','1');
  param.AddFormField('btnSaveOffer','Изпрати', 'utf-8');
  valid:=true;
  url:='http://127.0.0.1/POST.php';
  text:=http.Post(url,param);

这是我的POST.php

的回复
<?php print_r($_POST); ?>

there is the site response

3 个答案:

答案 0 :(得分:4)

您告诉AddFormField()使用UTF-8对文本值进行编码,然后使用MIME quoted-printable编码在传输过程中对UTF-8八位字节进行额外编码,这是{的默认设置{1}}文本数据的属性。您正在PHP输出中看到带引号的可打印文本。如果您希望PHP接收原始UTF-8八位字节,请将TIdFormDataField.ContentTransfer属性设置为'8bit'或'binary',例如:

TIdFormDataField.ContentTransfer

否则,您的PHP代码必须使用quoted-printable-decode()函数解码引用的可打印数据。

答案 1 :(得分:1)

您的“编码标志”是采用UTF8编码的西里尔字母。您可以使用correspondent encoding table手动解码它们。例如

D0 A1 D0 BE D1 84 D0 B8 D1 8F - &gt; София

答案 2 :(得分:0)

PHP服务器以引用的可打印格式接收UTF-8编码的字符串。要验证这一点,请检查应用程序是否在IdMulitpartFormData:

中遇到此行
FContentTransfer := sContentTransferQuotedPrintable;

然而,PHP方应该能够处理这种传输模式。