【问题标题】:Can an email header have different character encoding than the body of the email?电子邮件标头可以具有与电子邮件正文不同的字符编码吗?
【发布时间】:2015-01-18 05:01:09
【问题描述】:

标题和正文的字符编码不同的电子邮件是否有效? 用例:在处理电子邮件时,我应该单独检查其标题的字符编码,还是检查它的正文就足够了? 有人可以指导我如何解决这个问题吗? 提前致谢!

【问题讨论】:

    标签: email mime rfc822


    【解决方案1】:

    电子邮件标头应使用 ASCII 字符集,如果您希望标头字段具有不同的编码,则需要使用编码字语法:http://en.wikipedia.org/wiki/MIME#Encoded-Word

    只有在传输它的邮件服务器启用了 8 位 mime 时,才能直接以不同的编码对电子邮件正文进行编码(现在每个邮件服务器都应该启用它,但不能保证),否则您需要在传输编码中对正文进行编码(quoted-printable or base64)

    每种情况下的字符集都可以不同,也就是说,您可以将每个编码的单词放在不同的字符集中,将每个邮件部分编码成不同的字符集,甚至也可以使用不同的传输编码。

    例如,您可以:

    Subject: =?UTF-8?Q?Zg=C5=82oszenie?= //header value in UTF-8 encoded with quoted printable
    

    和正文编码:

    Content-Type: text/plain; charset="iso-8859-2"
    Content-Transfer-Encoding: base64
    
    WmG/87PmIEfqtmyxIEphvPE=
    

    同一封邮件中不同的字符集,不同的传输编码,没问题。

    根据经验,我可以告诉您,此类邮件非常普遍。更糟糕的是,您会收到一封电子邮件,其中在 Content-Type 标头中声明一个字符集,在 html 正文元标记中声明另一个字符集:

    Content-Type: text/html; charset="iso-8859-2"
    
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charser=utf-8">
    

    由您来猜测实际使用的字符集。可能是元标记中的那个。

    什么都不做。期待一切。不要俘虏。这是斯巴达。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-15
      • 2022-11-04
      • 1970-01-01
      • 2010-09-12
      • 2017-06-11
      • 2013-08-05
      • 1970-01-01
      • 2015-01-15
      相关资源
      最近更新 更多