我的任务是发送大多数收件人将以HTML格式阅读的电子邮件。对于那些无法阅读HTML或选择不阅读HTML的人,将包含MIME text / plain替代。
HTML是英文的,包含来自Latin-1 Supplement和General Punctuation的字符,因此US-ASCII或ISO-8859-1不会保留所有字符。我可以通过在编码之前替换字符来缓解。
我的问题是哪个charset用于text / plain部分? US-ASCII,ISO-8859-1或UTF-8。相关问题是基于文本的电子邮件客户端仍在使用,它们是否支持这些字符集?
答案 0 :(得分:1)
我对基于文本的电子邮件客户端阅读字符集的情况没有任何答案,因此我查看了常见的电子邮件发件人如何对其替代文本进行编码。
GMail和Outlook(2007)都选择了可以代表内容的最小字符集。换句话说,如果文本很简单,它们使用US-ASCII;如果存在欧洲字符,则使用ISO-8859- *;对于大量字符,它们使用UTF-8。
在我的一项测试中,Outlook有点儿错误。我加入了一些通用标点符号。 Outlook使用WINDOWS-1252对其进行编码,但将其标记为ISO-8859-1。
伪代码中的问题答案是
for charset in us-ascii, iso-8859-1, utf-8
if encode(text, charset)
break
字符集列表适合我期待的输入。