我有一个PHP脚本,读取电子邮件/新闻组消息,我发现一个情况下,我有一个文本,这是一个混合阿拉伯语&拉丁词,即
PHP and ARABIC_WORD
。
PHP and الساعة
问题是,文本是编码的,即
Some Text =?utf-8?b?RVByaW50cyBhbmQg2KfZhNi52LHYqNmK2Kk=?=
我的问题是我怎么能解码这个?utf-8?...
当它与拉丁文本混合?
我使用的是PHP 5.4.15
您得到的是在电子邮件消息中用于非US-ASCII编码文本的MIME encoded - word语法:
格式为:"=?charset?encoding?encoded text?="
.
-
charset
可以是在IANA注册的任何字符集。通常情况下,它将与消息正文相同的字符集。 -
encoding
可以是"Q",表示Q编码,类似于带引号的可打印编码,也可以是"B",表示base64编码。 -
encoded text
是q编码或base64编码的文本。- 编码字长度不得超过75个字符,包括字符集、编码、编码文本和分隔符。如果需要编码多于75个字符的编码词,可以使用多个编码词(用CRLFSP分隔)。
这段摘自维基百科的小片段也包含了如何解码字符串。当然,您不是第一个需要这样做的人,因此存在库。参见:
- 在PHP中处理邮件解析/解码的最佳方式?
- 正确的方式解码传入的电子邮件主题(utf8)
似乎是编码文本:尝试使用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 العربية