1

我有一个读取电子邮件/usenet 消息的 PHP 脚本,我发现了一个案例,其中我有一个混合了阿拉伯文和拉丁文单词的文本,即。

PHP and ARABIC_WORD

IE。

PHP and الساعة

问题是,文本是编码的,即。

Some Text =?utf-8?b?RVByaW50cyBhbmQg2KfZhNi52LHYqNmK2Kk=?=

我的问题是?utf-8?...当它与拉丁文本混合时如何解码?

我正在使用PHP 5.4.15

4

2 回答 2

3

您所拥有的是在电子邮件中用于非 US-ASCII 编码文本的MIME 编码字语法:

形式为:"=?charset?encoding?encoded text?="

  • charset可以是在IANA注册的任何字符集。通常它与消息正文的字符集相同。
  • encoding可以是“Q”,表示类似于引用可打印编码的 Q 编码,或“B”表示base64编码。
  • encoded text是 Q 编码或 base64 编码的文本。-编码词的长度不得超过 75 个字符,包括charsetencodingencoded textdelimiters。如果希望编码的文本多于 75 个字符的编码字,则可以使用多个编码字(由 CRLFSP 分隔)。

因此,维基百科的这个小摘录还包含如何解码字符串。当然,您不是第一个需要这样做的人,因此存在库。另见:

于 2013-06-25T03:37:28.993 回答
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 العربية
于 2013-06-21T16:46:56.493 回答