类似这类电子邮件的编码如何解? “B?”到“?=”之间的内容既是,base64编码的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 电子邮件中的内容,涉及到2种编码概念:(1). 字符编码(Char Encoding)。把 "字符串" => "字节串" 的编码(2). 传输编码(Content-Transfer-Encoding)。把 "字节串" => "另一个字节串" 的编码(需要注意 "字符" 与 "字节")这部分内容的形成过程是:"中文" => 通过GB2312 => 得到字节串 char[4]char[4] => 通过 Base64 => 得到另一个字节串 "u7vTys/kwcsgIM2s1r7Dxw=="(举例)最后写成 =? gb2312 ? b ? u7vTys/kwcsgIM2s1r7Dxw== ?=关于这一点的更详细的说明,推荐搂主看一篇文章:http://www.regexlab.com/zh/encoding.htm 解码过程则相反:先 Base64 解码,得到了用 GB2312 编码的字节 char[]。对于 PHP 来讲,不需要再把字节转化成 UNICODE 字符串。只需要直接输出就可以了,因为编码采用的是 gb2312。而对于 java 或者 C++ 来说,最好是使用 gb2312 再转化成为 UNICODE 字符串。更多关于 UNICODE 字符串,以及编码的概念:http://www.regexlab.com/zh/encoding.htm Subject: =?gb2312?B?u7vTys/kwcsgIM2s1r7Dxw==?=对于以上这类只需要取出B?与?=之间的内容,用 base64_decode()即可解码了,非常感谢以上二位的回答我刚才根据sswater提供的文献又看见了另一种编码如果为Q?与?=之间的内容的话,形如下面,可以用quoted_printable_decode()这个函数解码Subject: =?GB2312?Q?=D6=D0?= 搂主还需要注意的是,如果前页面不是 gb2312 ,解码后直接显示可能显示不出正确的汉字。搂主可以借此机会进一步了解一下 UNICODE 的概念。如果前面是 utf8,而搂主的当前页面是 gb2312 ,那么可能需要进行编码的转换才能正常显示。比如:假设: =?utf8?Q?=AB=CD=34?=,而页面是 charset=gb2312那么,需要进行的操作是:1. decode 得到 char[] // 用 utf8 编码的2. 通过 '字节' => utf8编码 => 'UNICODE 字符'3. 通过 'UNICODE 字符' => gb2312 => '字节' // 得到 gb2312 编码的4. 显示最终得到的 '字节串' 请教一个二维数组排序问题 ecshop错误求解 100分发个帖子: 有没有关于PHP的设计模式的入门教程? php变量 绕,英语又不好 。谁给个详细解释哦 下面这段码 PHP5中高级程序员进,可以兼职!在家工作! 如何在PHP4.3.4中加GD库 调查:弟兄们使用的收费空间都是那家isp的?长期买有优惠不? 解决后既散分:关于修改文本文件的问题 请问有没有什么工具可以把ASP转为PHP的 求救如何插入循环显示的空格中的值 ■■■■求助:关于论坛的树形和平板浏览的切换方法■■■■ 谁是现在最牛的、功能最全、最人性化的CMS?
(2). 传输编码(Content-Transfer-Encoding)。把 "字节串" => "另一个字节串" 的编码
(需要注意 "字符" 与 "字节")这部分内容的形成过程是:
"中文" => 通过GB2312 => 得到字节串 char[4]
char[4] => 通过 Base64 => 得到另一个字节串 "u7vTys/kwcsgIM2s1r7Dxw=="(举例)最后写成 =? gb2312 ? b ? u7vTys/kwcsgIM2s1r7Dxw== ?=关于这一点的更详细的说明,推荐搂主看一篇文章:
http://www.regexlab.com/zh/encoding.htm
先 Base64 解码,得到了用 GB2312 编码的字节 char[]。对于 PHP 来讲,不需要再把字节转化成 UNICODE 字符串。只需要直接输出就可以了,因为编码采用的是 gb2312。
而对于 java 或者 C++ 来说,最好是使用 gb2312 再转化成为 UNICODE 字符串。更多关于 UNICODE 字符串,以及编码的概念:
http://www.regexlab.com/zh/encoding.htm
对于以上这类只需要取出B?与?=之间的内容,用 base64_decode()即可解码了,非常感谢以上二位的回答我刚才根据sswater提供的文献又看见了另一种编码如果为Q?与?=之间的内容的话,形如下面,可以用quoted_printable_decode()这个函数解码
Subject: =?GB2312?Q?=D6=D0?=
那么,需要进行的操作是:
1. decode 得到 char[] // 用 utf8 编码的
2. 通过 '字节' => utf8编码 => 'UNICODE 字符'
3. 通过 'UNICODE 字符' => gb2312 => '字节' // 得到 gb2312 编码的
4. 显示最终得到的 '字节串'