码迷,mamicode.com
首页 > Windows程序 > 详细

delphi请求http接口中文乱码问题

时间:2017-07-26 15:37:40      阅读:343      评论:0      收藏:0      [点我收藏+]

标签:dateutil   util   如何   dht   obj   数据   ring   signature   utf8   

请求http接口的时候参数值是中文乱码:

http接口一般都是由java,php以及C#开发而成的,乱码的原因也是由于编码的问题,一般传递数据的都是utf8,然后传递的时候都会urlEcode

那么delphi如何解决这个问题呢?

请看下面的实例,实例中的“哈哈”二字就是中文:

procedure TClientForm.Button77Click(Sender: TObject);
var paramStream: TIdMultiPartFormDataStream;
vResponse: TStringStream;
filename, vres: string;
vList: TStringList;
jsonstr,signStr,timestamp,sign: string;
begin
//生成sign
timestamp := FormatFloat(‘#‘, DateUtils.MilliSecondsBetween(Now, StrToDateTime(‘1970-1-1‘)) - 8 * 60 * 60);
signStr:=‘schNo=1000066&schRecords=‘+httpencode(UTF8Encode(‘哈哈‘));
sign:=MD5.StrMD5(signStr);
paramStream := TIdMultiPartFormDataStream.Create;
vResponse := TStringStream.Create(‘‘);
vList := TStringList.Create;
// paramStream.AddFile(‘FileInputStream‘, ‘D:\1.xlsx‘, GetMIMETypeFromFile(‘D:\1.xlsx‘));

//paramStream.AddFormField(‘fileName‘, UTF8Encode(‘1.xlsx‘));
paramStream.AddFormField(‘signature‘, sign);
paramStream.AddFormField(‘schRecords‘, UTF8Encode(‘哈哈‘));
paramStream.AddFormField(‘N‘, ‘1‘);
IdHTTP1.Post(‘http连接‘, paramStream, vResponse);
vres := (vResponse.DataString); //Utf8ToAnsi

Memo1.Text := Utf8ToAnsi(vres);
// ShowMessage(vres);
end;

delphi请求http接口中文乱码问题

标签:dateutil   util   如何   dht   obj   数据   ring   signature   utf8   

原文地址:http://www.cnblogs.com/xwgcxk/p/7239748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!