我試圖編碼→(右箭頭,→
或Unicode 2192十六進制)到電子郵件主題行。UTF-8字符編碼的電子郵件標題用PHP
當我使用PHP的mb_encode_mimeheader()
我得到一個不同的值,當我做雷鳥或Gmail同樣的事情。但是當php生成的電子郵件到達時,字符不能正確顯示。此外,PHP的mb_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的編碼,雷鳥和Gmail出來爲:A
我完全被PHP的行爲困惑,因爲它似乎沒有產生標準的結果。
我怎樣才能讓PHP編碼UTF-8電子郵件標頭值,這樣它會通過郵件客戶端正確解碼?
utf8_encode($ variable)..http://php.net/manual/en/function.utf8-encode.php – Dinesh
@Dinesh字符串是*已經UTF-8編碼的*,你不需要'utf8_encode'。 – deceze
相關:從PHP電子郵件打破Subject頭編碼(http://stackoverflow.com/q/4389676/2157640) – Palec