最近在使用delphi post json數據時,遇到了中文亂碼的問題,研究了一下發現有兩種可能的原因:
1. 代碼中沒有設置編碼格式:
Params := TMemoryStream.Create;
try
Params.WriteBuffer(JsonString[1], Length(JsonString));
Params.Position := 0;
IdHTTP1.Request.ContentType := 'application/json; charset=utf-8'; // 指定編碼格式
IdHTTP1.Post(URL, Params);
finally
Params.Free;
end;
2. 服務器端沒有正確解析編碼格式:
var
Request: THTTPRequest;
Response: IHTTPResponse;
Json: TJSONObject;
begin
Request := THTTPRequest.Create;
try
Request.Method := rmPOST;
Request.ContentType := 'application/json; charset=utf-8';
Json := TJSONObject.Create([TJSONPair.Create('Name', '張三'), TJSONPair.Create('Age', 18)]);
Request.Content := TEncoding.UTF8.GetBytes(Json.ToString); // 設置編碼格式
Response := Request.Execute('http://api.example.com');
ShowMessage(TEncoding.UTF8.GetString(Response.Content)); // 解析編碼格式
finally
Request.Free;
Json.Free;
end;
end;
以上是兩種常見的解決方法,可以根據具體情況進行選擇。