使用 idHTTP 获取 UTF-8 编码的中文网页 - 回复同学 "Delphi学习者" 的问题

本文展示了如何使用TIdHTTP组件进行HTTP GET请求,并通过TStringStream处理响应数据,将UTF8编码的字符串流转换为文本显示。
uses IdHTTP;

const Url = 'http://del.cnblogs.com';

procedure TForm1.Button1Click(Sender: TObject);
var
  stream: TStringStream;
  idHttpObj: TIdHTTP;
begin
  stream := TStringStream.Create('', TEncoding.UTF8); //

  idHttpObj := TIdHTTP.Create(nil);
  idHttpObj.Get(Url, stream);
  idHttpObj.Free;

  Memo1.Text := stream.DataString;
  stream.Free;
end;
Delphi7中使用`TIdHTTP`通过`POST`访问大模型API接口处理网络JSON数据出现UTF - 8乱码时,可按以下方式指定字符集编码解决。 首先,在发送请求时,需要确保请求头中指定正确的字符集为UTF - 8。在接收响应时,将响应数据以字节形式获取,再手动使用UTF - 8编码将其转换为字符串。 以下是示例代码: ```delphi function PostJsonAndGetResponse(const AURL: string; const AJsonData: string): string; var IdHTTP: TIdHTTP; PostData: TStringStream; ResponseBytes: TBytes; begin IdHTTP := TIdHTTP.Create; PostData := TStringStream.Create(AJsonData, TEncoding.UTF8); try // 设置请求头,指定字符集为UTF - 8 IdHTTP.Request.ContentType := 'application/json; charset=UTF-8'; ResponseBytes := IdHTTP.Post(AURL, PostData); Result := TEncoding.UTF8.GetString(ResponseBytes); finally PostData.Free; IdHTTP.Free; end; end; procedure TestPostJson; var JsonData: string; ResponseStr: string; JsonObject: TJSONObject; begin // 示例JSON数据 JsonData := '{"key": "value"}'; ResponseStr := PostJsonAndGetResponse('http://api.example.com/data', JsonData); JsonObject := TJSONObject.ParseJSONValue(ResponseStr) as TJSONObject; try // 处理JSON对象 if Assigned(JsonObject) then begin // 假设返回的JSON包含中文字符 Writeln(JsonObject.GetValue('name').Value); end; finally JsonObject.Free; end; end; ``` 在上述代码中,`PostJsonAndGetResponse`函数用于发送`POST`请求并接收响应。在发送请求时,通过`IdHTTP.Request.ContentType`指定请求头的字符集为UTF - 8。接收响应时,使用`TEncoding.UTF8.GetString`将响应的字节数据转换为UTF - 8编码的字符串,从而避免乱码问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值