我有一个读取电子邮件/usenet 消息的 PHP 脚本,我发现了一个案例,其中我有一个混合了阿拉伯文和拉丁文单词的文本,即。
PHP and ARABIC_WORD
IE。
PHP and الساعة
问题是,文本是编码的,即。
Some Text =?utf-8?b?RVByaW50cyBhbmQg2KfZhNi52LHYqNmK2Kk=?=
我的问题是?utf-8?...
当它与拉丁文本混合时如何解码?
我正在使用PHP 5.4.15
您所拥有的是在电子邮件中用于非 US-ASCII 编码文本的MIME 编码字语法:
形式为:"=?charset?encoding?encoded text?="
。
charset
可以是在IANA注册的任何字符集。通常它与消息正文的字符集相同。encoding
可以是“Q”,表示类似于引用可打印编码的 Q 编码,或“B”表示base64编码。encoded text
是 Q 编码或 base64 编码的文本。-编码词的长度不得超过 75 个字符,包括charset、encoding、encoded text和delimiters。如果希望编码的文本多于 75 个字符的编码字,则可以使用多个编码字(由 CRLFSP 分隔)。因此,维基百科的这个小摘录还包含如何解码字符串。当然,您不是第一个需要这样做的人,因此存在库。另见:
它似乎是编码文本:尝试使用 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 العربية