我想用Delphi XE5中的新TRest組件發送推文。我正在尋找一種方法來UTF8編碼我的鳴叫,其中包含IS0-8859-1字符。下面的代碼工作,但涉及代碼頁轉換等是一個更好的方法?任何人?支持TRestClient中的UTF-8編碼字符串Delphi XE5
procedure TTwitterApi.Send(Tweet: string);
begin
Reset;
// Encode as UTF8 within (UTF-16 Delphi) string
Tweet := EncodeAsUTF8(Tweet);
FRestRequest.Resource := '1.1/statuses/update.json';
FRestRequest.Method := rmPOST;
FRestRequest.Params.AddItem('status', Tweet, pkGETorPOST);
FRestRequest.Execute;
end;
function TTwitterApi.EncodeAsUTF8(UnicodeStr: string): string;
var
UTF8Str: AnsiString;
TempStr: RawByteString;
begin
TempStr := UTF8Encode(UnicodeStr);
SetLength(UTF8Str, Length(TempStr));
Move(TempStr[1], UTF8Str[1], Length(UTF8Str));
Result := UTF8Str;
end;
每個編碼字符的UTF8現在的作品。謝謝! – user3012503
我已經看過REST.Client模塊中的ContentType。使用POST時,ContentType將從請求參數中獲取。 (Se line 2569:LContentType:= ContentType;)如果contenttype是ctNone,它實際上結束爲APPLICATION_X_WWW_FORM_URLENCODED。所以ContentType是正確的。 – user3012503
正如你所說,沒有辦法將UTF-8設置爲charset,但是由於Twitter只接受UTF-8,所以這個方法可行。 – user3012503