我目前正在创建一个小邮件客户端并面临charset的问题。 我使用indy的TIdIMAP4组件从邮件服务器检索数据。当我尝试检索邮件正文时,ä,ü等强调字母分别转换为= E4,= FC,因为它使用字符集ISO-8859-1。
Content-Type:text / plain; 字符集= “ISO-8859-1” 内容传输编码: 引号的可打印
如何让服务器在另一个字符集中发送数据,比如utf-8?这个问题的最佳解决方案是什么?
提前致谢!
答案 0 :(得分:5)
生成charset
和=E4
等字符串的=FC
不是Content-Transfer-Encoding
,而是$E4
。 $FC
和ä
是ISO-8859-1中ü
和$7F
的二进制表示形式,但它们是8位值。电子邮件仍然主要是7位环境。除非客户端和服务器在通信期间协商8位传输,否则quoted-printable
以上的字节八位字节必须以7位兼容方式进行编码,以安全地通过电子邮件网关,尤其是仍然存在的传统网关。 base64
是电子邮件中常用的7位字节编码,用于文本内容。 {{1}}是另一个,但它不是人类可读的,因此它倾向于用于二进制数据而不是文本数据(尽管它可以用于文本)。
在任何情况下,您都无法使服务器以其他编码方式向您发送电子邮件数据。服务器仅按原样传送原始电子邮件数据,最初由发件人传送给它。如果您想要UTF-8中的数据,则必须在下载后自行重新编码。 Indy将为您处理解码。