我正在尝试将 → (右箭头,→
或 unicode 2192 hex)编码到电子邮件主题行中。
当我使用 php 时,mb_encode_mimeheader()
我得到的价值与使用 Thunderbird 或 Gmail 做同样的事情时不同。但是当 php 生成的电子邮件到达时,字符没有正确显示。此外,PHPmb_decode_mimeheader()
可以处理 PHP 的输出,但不能解码来自其他电子邮件源的内容。
通过十六进制转储,我发现箭头的 UTF-8 表示是
<?php
$rarr = "\xe2\x86\x92";
mb_encode_mimeheader($rarr, 'UTF-8'); // =?UTF-8?B?w6LChsKS?=
// whereas Tbird and Gmail produce: =?UTF-8?B?4oaS?=
// and more manually:
'=?UTF-8?B?' . base64_encode($rarr).'?='; // =?UTF-8?B?4oaS?=
PHP 的编码出现在 Thunderbird 和 Gmail 中:
我对 PHP 的行为完全感到困惑,因为它似乎没有产生标准结果。
如何让 PHP 对 UTF-8 电子邮件标头值进行编码,以便邮件客户端正确解码?