0

我正在处理一个 IMAP 电子邮件脚本,我有一些用GB2312编码的行(我假设是中文编码),看起来像这样=?GB2312?B?foobarbazetc

我怎样才能开始使用这个字符串?我查了一下mb_list_encodings(),这个没有列出。

4

2 回答 2

6

如果您有 base64 解码的数据,请使用 mbstring 或 iconv。如果您有原始标头,则为 mbstring。

<?php
$t = "\xc4\xe3\xba\xc3\n";
echo iconv('GB2312', 'UTF-8', $t);
echo mb_convert_encoding($t, 'UTF-8', 'GB2312');

mb_internal_encoding('UTF-8');
echo mb_decode_mimeheader("=?gb2312?b?xOO6ww==?=");
?>
于 2010-12-30T03:08:36.987 回答
3

Ignacio 解决了问题的核心,mb_decode_mimeheader()但对于将来的参考,这些链接也很有帮助:

我正在使用的特定标头字符串:

$subject = "=?GB2312?B?tPC4tDogUXVvdGF0aW9uIFBJSSBwcm9kdWN0cyA=?= =?GB2312?B?Rk9CIFNoYW5naGFpIG9yIE5pbmdibyBwb3J0?="

这需要一个页眉

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

和 PHP

mb_internal_encoding('utf-8');
echo mb_decode_mimeheader($subject)."<br />";

输出

主题: Quotation PII products FOB Shanghai or Ningbo port
于 2010-12-30T03:46:45.043 回答