作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 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); ?>
最佳答案
您告诉 AddFormField()
使用 UTF-8 对文本值进行编码,然后在传输过程中使用 MIME 的 quoted-printable
对 UTF-8 八位字节进行额外编码编码,这是文本数据的 TIdFormDataField.ContentTransfer
属性的默认设置。您将在 PHP 输出中看到引用的可打印文本。如果您希望 PHP 接收原始 UTF-8 八位字节,请将 TIdFormDataField.ContentTransfer
属性设置为“8bit”或“binary”,例如:
param.AddFormField('offer[fullname]',UserArray[0], 'utf-8').ContentTransfer := '8bit';
否则,您的 PHP 代码将必须使用 quoted-printable-decode() 来解码引用的可打印数据。功能。
关于Delphi Indy 以西里尔文发送 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6750222/
我是一名优秀的程序员,十分优秀!