我有一个PHP脚本,可以阅读电子邮件/ usenet消息,我发现一个案例,我的文字是混合了阿拉伯语&拉丁语,即
PHP and ARABIC_WORD
即
PHP and الساعة
问题是,文本是编码的,即
Some Text =?utf-8?b?RVByaW50cyBhbmQg2KfZhNi52LHYqNmK2Kk=?=
我的问题是如果将此?utf-8?...
与拉丁文本混合后如何解码?
我正在使用 PHP 5.4.15
答案 0 :(得分:3)
您获得的是非US-ASCII编码文本的电子邮件中使用的MIME Encoded-Word语法:
表单为:"=?charset?encoding?encoded text?="
。
charset
可以是使用IANA注册的任何字符集。通常它与邮件正文是相同的字符集。encoding
可以是“Q”,表示与quoted-printable编码类似的Q编码,或“B”表示base64编码。encoded text
是Q编码或base64编码的文本。
- 编码字长度不得超过75个字符,包括 charset ,编码,编码文本,和分隔符。如果希望编码的文本多于75个字符的编码字,则可以使用多个编码字(由CRLFSP分隔)。因此,维基百科的这一小段摘录也包含了如何解码字符串。当然,你不是第一个需要这样做的人,因此库存在。另见:
答案 1 :(得分:0)
它似乎是编码文本:尝试使用php函数base64_decode。
$my_string = 'test string';
$res = base64_encode($my_string);
echo $res; //dGVzdCBzdHJpbmc=
echo base64_decode($res); // test string
实际上,解码你的字符串:
base64_decode("RVByaW50cyBhbmQg2KfZhNi52LHYqNmK2Kk=")
返回这样的内容:
EPrints and العربية