androidansi编码格式,android-为什么⽂本⽂件的编码从UTF-8
更改为AN。。。
下载此⽂件时,.txt⽂件的编码已从UTF-8更改为ANSI
使⽤TIdAttachmentFile ,⽂件的原始字节按TIdAttachmentFile发送。 Indy不会更改附件的编码。
TIdAttachmentFile根据传递给构造函数的⽂件名的扩展名默认其ContentType属性值。 在这种情况下,扩展名为.txt因此ContentType 应该默认为text/plain 。 text/...媒体类型具有与之关联的charset属性,但是您没有在代码中设置附件的Charset属性。 否则,接收者将使⽤默认charset解释数据(通常是RFC 822中的us-ascii )。 因此,收件⼈很可能正在检测缺少charset的text/plain媒体类型,并以ASCII / ANSI格式显⽰⽂件数据,因为它不知道数据实际上是UTF-8编码的(因为⽂件是附件) ,如果将附件保存到新⽂件中,则收件⼈应按原样保存原始字节)。
如果您知道要附加的⽂件是使⽤UTF-8编码的事实,则应该对其进⾏明确说明:
if FileExists(PathString) then
begin
Attachment := TIdAttachmentFile.Create(IdMessage.MessageParts, PathString);
Attachment.ContentType := 'text/plain';
Attachment.Charset := 'utf-8';
end;
并在彼此相邻⽽不是彼此下⽅的⾏中显⽰其内容。
这听起来更像是换⾏问题⽽不是编码问题。 例如,如果Android上的原始⽂件使⽤LF换⾏符,但是收件⼈仅⽀持CRLF换⾏符。
如果需要,您可以让Indy将换⾏符标准化为CRLF 。 您只需将⽂件数据加载到TIdText⽽不是TIdAttachmentFile ,然后确保将TIdText.ContentDisposition属性设置为attachment (否则它将默认设置为inline ),并设置TIdText.FileName ,因此仍会处理数据作为收件⼈的附件:
if FileExists(PathString) then
begin
Attachment := TIdText.Create(IdMessage.MessageParts, nil);
Attachment.Body.LoadFromFile(PathString, TEncoding.UTF8);
Attachment.ContentType := 'text/plain';
Attachment.Charset := 'utf-8';
Attachment.ContentDisposition := 'attachment';
Attachment.FileName := ExtractFileName(PathString);
end;
现在,尽管如此,您在使⽤Indy组件时通常还会遇到⼀些其他⼩的编码问题。 我建议改成这样:
try
IdSMTP := TIdSMTP.Create(nil);
try
想自由 林宥嘉SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdSMTP);
IdSMTP.IOHandler := SSLHandler;
IdSMTP.UseTLS := utUseExplicitTLS;
IdSMTP.Host := 'ail';
IdSMTP.Port := 587;
IdSMTP.AuthType := satDefault;
IdSMTP.Username := AppData.MailAddrSender;
WORD 下划线IdSMTP.Password := Appdata.MailPassword;
IdMessage := TIdMessage.Create(nil);
穿越耽美小说try
IdMessage.From.Name := aName;
三阶魔方玩法图解
IdMessage.From.Address := AppData.MailAddrSender;
IdMessage.Subject := 'E-mail subject';
IdEmailAddressItem := IdMessage.Recipients.Add;
IdEmailAddressItem.Address := AppData.MailAddrReceiver;
IdMessage.Body.Add('Mail todays log,');
PathString := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDocumentsPath, PathString + ''); if FileExists(PathString) then
begin
//
Attachment := TIdAttachmentFile.Create(IdMessage.MessageParts, PathString);
Attachment.ContentType := 'text/plain';
仪表盘指示灯图解Attachment.Charset := 'utf-8';
end;
IdSMTP.Connect;
try
IdSMTP.Send(IdMessage);
finally
IdSMTP.Disconnect;
end;
finally
IdMessage.Free;
end;
finally
IdSMTP.Free;
end;
except
有什么好听的歌啊on E: Exception do
//exception handling here end;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论