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


本文整理自网络,侵删。

 
请求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调试服务程序的两种方法

Delphi 取得txt文件编码

Delphi中用拼音首字符序列来实现检索功能

Delphi读写utf-8、unicode格式文本文件

Delphi 之 热键组件(thotkey)

Delphi 判断字符串是否为纯数字组合

Delphi 压缩带密码的access数据库的方法

Delphi 时钟

Delphi 消息实现窗口最小化,最大化,关闭(Delphi)

Delphi system.net.httpclient 下载

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...