【发布时间】:2012-07-26 22:26:32
【问题描述】:
我正处于重新编码网站的最后阶段,该网站正式使用 iso-8859-1 字符编码,但现在全部使用 UTF-8。
问题是 mailto href 链接的主题部分在使用特殊字符时无法与 Outlook 一起使用。我得到了通常的乱码字符表示,表明当单击链接并在 Outlook 中弹出新邮件窗口时存在明显的字符编码问题。
我已经尝试 rawurlencode() 来解决这个问题,但这似乎不适用于 Outlook...
<a href="mailto:blah@blah.com?subject=<?=rawurlencode($subj);?>">send email</a>
于是想,outlook一定要坚持不同的编码,先尝试utf-8解码主题字符串……
<a href="mailto:blah@blah.com?subject=<?=rawurlencode(utf8_decode($subj));?>">send email</a>
宾果!工作伟大的前景。但现在其他一切都失败了:(
我找不到适用于所有邮件客户端的解决方案。
当整个页面以 iso-8859-1 显示时,它在所有邮件客户端上都能正常工作。但当页面内容为 utf-8 时则不然。
不幸的是,客户希望保留此直接电子邮件链接,尽管它正下方有一个正常工作的邮件表单!
有什么好的解决办法吗?
【问题讨论】:
-
您希望 Quoted Printable 的 Q 变体用于“主题”标题(或 Base64 的 B 变体,如果不使用 7 位 ASCII 的超集)。请参阅 MIME RFC。
-
我认为正在使用 Q 变体。单词“véhicule”在 mailto 链接 url 中转换为“v%C3%A9hicule”。由于它是一个 URL,这将等同于邮件客户端的“v=C3=A9hicule”。但到达 Outlook 时显示不正确。我认为这是因为 Outlook 需要 iso-8859-1 编码(其中“é”将是“=E9”。但是,这在所有其他客户端中都不起作用。
标签: php email encoding utf-8 outlook