You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Delphi TREST组件POST波斯文参数乱码的解决方法咨询

Delphi TREST组件POST请求波斯文参数乱码解决方法

出现波斯文参数被错误转码的问题,核心原因是请求未明确指定UTF-8编码,导致组件使用了不匹配的编码格式发送数据。以下是针对TREST组件的具体解决方案:

方案一:添加UTF-8编码的Content-Type头并指定参数编码

直接在请求中设置正确的Content-Type,并在添加参数时指定UTF-8编码:

Request.Method := rmPost;
// 设置表单提交的Content-Type为UTF-8编码
Request.AddHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
// 添加参数时指定UTF-8编码
Request.Params.Add('ChangeLog', 'توضیحات نسخه', pkGETorPOST, [], TEncoding.UTF8);

方案二:全局设置TRESTClient的编码

通过配置TRESTClient的默认编码为UTF-8,让所有请求都使用该编码处理参数:

// 先设置RESTClient的编码为UTF-8
RESTClient1.Encoding := TEncoding.UTF8;
// 再配置请求参数
Request.Method := rmPost;
Request.Params.Add('ChangeLog', 'توضیحات نسخه', pkGETorPOST);

原理说明

TREST组件默认可能使用系统本地编码(如Windows-1256)处理非ASCII字符,而多数服务器端默认期望UTF-8编码的请求数据。明确指定UTF-8编码后,波斯文会被正确转换为UTF-8字节流发送,服务器端即可正确解码还原原文字符。

内容的提问来源于stack exchange,提问作者Shayan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 14:23:23