我正在使用电报bot API发送文档。一切正常,直到我需要发送带有中文字符的文件。文件已正确发送,但文件名是垃圾。这是我的测试代码:
procedure TSendThread.SendTelegramMessage(filename, chat_id, aCaption: string);
const
c_url = 'https://api.telegram.org/bot893812066:YOUR_TOKEN/sendDocument';
var
idHttpEx : TIdHTTPEx; // this is good as TIdHttp
aParam : TIdMultipartFormDataStream;
begin
idHttpEx := TIdHTTPEx.Create(nil);
aParam := TIdMultipartFormDataStream.Create;
try
aParam.AddFormField('chat_id', chat_id);
aParam.AddFormField('caption', aCaption, 'utf-8').ContentTransfer := '8bit';
aParam.AddFile('document', filename); //original code
// test 1
// with aParam.AddFile('document', filename) do
// begin
// Charset := 'utf-8';
// ContentTransfer := '8bit';
// end;
// test 2
// aParam.AddFile('document', filename).Charset := 'utf-8';
// test 3
// aParam.AddFile('document', filename, 'utf-8').ContentTransfer := '8bit';
// test 4
// aParam.AddFile('document', UTF8Encode(filename)).ContentTransfer := '8bit';
idHttpEx.Post(c_url, aParam);
finally
aParam.Free;
idHttpEx.Free;
end;
end;
如何正确发布带有中文文件名的文件?我哪里出错了?
*****编辑***** 文件名是中文,例如:强大.txt。我仍然收到完整的文件,但文件名现在是: = UTF-8 B 5paw5LiW55WMXzIwMTktMDYtMjUuVFhU = ,这是不正确的。