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;

时间: 2024-10-12 11:00:45

delphi请求http接口中文乱码问题的相关文章

请求接口中文乱码问题

请求别的公司接口  总是中文乱码   设成  utf-8也不行  后来在传递中文上用 HttpUtility.UrlEncode(DetailCheckPlan.EmpName)  这样包裹  意思是以utf-8编码  中文传递正常 记一下  以防以后忘记 原文地址:https://www.cnblogs.com/muzishisan/p/9986153.html

Servlet处理get请求时的中文乱码问题

我们都知道,使用Servlet处理get请求时,如果get请求的参数中有中文,直接接收会是乱码,这个时候我们使用类似下面的语句来处理乱码: 12345 String name = request.getParameter("name");System.out.prinlnt(name); // 乱码// 处理乱码name = new String(name.getBytes("ISO8859-1"),"UTF-8");System.out.pri

get方式请求会出现中文乱码。post方式不会。

如果是要解决get方式中文乱码问题,就需要做一个拦截器,或者在web.xml做一个get请求的配置 来自为知笔记(Wiz)

支付宝即时到账接口中文乱码问题

遇见乱码的情况一般都是粗心大意造成的,就像我今天对接支付宝支付接口碰到的中文商品名称在支付宝收银台乱码了,找了半天问题原来是控制层没有设置响应编码造成的. //设置返回字符编码,设置返回内容类型防止中文乱码 response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); 这两句代码在向客户端响应之前执行才会有效果. 第一句代码是设置字符集的编码ut

springmvc配置一:ajax请求防止返回中文乱码配置说明

Spring3.0 MVC @ResponseBody 的作用是把返回值直接写到HTTP response body里. Spring使用AnnotationMethodHandlerAdapter的handleResponseBody方法, AnnotationMethodHandlerAdapter使用request header中"Accept"的值和messageConverter支持的MediaType进行匹配,然后会用"Accept"的第一个值写入res

node请求下载接口时乱码

先说下问题 之前做的一个项目,三端同时开发(PC.WEB.APP),由于架构方面的原因,服务均不对外开放,接口地址自然也就不对外暴露了,所有请求都要经过node转发,此为背景.... 网站有个扫描二维码下载APP的功能,二维码对应的地址并不是一个静态文件地址,而是一个API接口,后台做了一些逻辑(比如统计下载次数),之后再返回apk文件由浏览器进行下载,但是问题出现了,在地址栏直接输入地址时是可以下载的,但是经过node转发之后,显示到页面上的都是乱码,并且没有下载,分析了下原因: 由于二维码对

jmeter接口测试-调用java的jar包-csv参数化请求-BeanShellPreProcessor生成验签作为请求验证参数-中文乱码----实战

背景及思路: 需求:要做 创建新卡 接口的测试,要求: 1. 不需要每次手动修改请求参数. 方案:文中先用excle将数据准备好,导出为csv格式,再用jmeter的csv请求进行参数化 2. 卡号需要唯一: 方案:文中用jmeter的beanshell按时间戳加随机数生成 3. 请求参数中有一个参数,会根据相应的请求参数生成(文中的sign值),接口请求会验证sign是否和相应请求参数对应: 方案: 1. 文中将生成sign的源码打包放在jmeter的lib\ext\ 下, 2. 再用jmet

http请求中的中文乱码问题

通过浏览器访问服务器页面和资源时,不可避免地要传送中文字串,如果客户机与服务器不能用同一码表解析字串,肯定会出现各种各样的乱码问题.我总结了几个乱码场景及解决办法,如下 1.服务器上的中文字串被客户端访问时出现的乱码问题 原因:浏览器在解析中文时,不知道该用什么码表去解析,就会用默认的gb2312去解析,肯定会出现乱码 解决办法:以什么码表写入流,在响应的请求头里就告诉浏览器用什么码表,例子使用utf-8 //告诉浏览器使用UTF-8码表解析 response.setHeader("Conten

ajax请求参数为中文乱码的情况

前提是ajax请求传递参数对象到后台,对象中的某个参数的值为中文,到后台之后出现乱码,导致报错.问题解决如下: rest层: