Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中解码包含混合内容(拉丁语和UTF-8)的字符串_Php_Utf 8 - Fatal编程技术网

如何在PHP中解码包含混合内容(拉丁语和UTF-8)的字符串

如何在PHP中解码包含混合内容(拉丁语和UTF-8)的字符串,php,utf-8,Php,Utf 8,我有一个PHP脚本,可以读取电子邮件/usenet消息,我发现有一个例子,其中的文本是阿拉伯语和拉丁语的混合体,即 PHP和阿拉伯语单词 即 PHP和الساعة 问题是,文本是经过编码的,即 Some Text=?utf-8?b?RVByaW50cyBhbmQg2KfZhNi52LHYqNmK2Kk=?= 我的问题是当这个?utf-8?…与拉丁文本混合时,我如何解码 我使用的是PHP5.4.15它似乎是编码文本:尝试使用PHP函数base64\u decode $my_string = 'te

我有一个PHP脚本,可以读取电子邮件/usenet消息,我发现有一个例子,其中的文本是阿拉伯语和拉丁语的混合体,即

PHP和阿拉伯语单词

PHP和الساعة

问题是,文本是经过编码的,即

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

我的问题是当这个
?utf-8?…
与拉丁文本混合时,我如何解码


我使用的是PHP5.4.15

它似乎是编码文本:尝试使用PHP函数base64\u decode

$my_string = 'test string';
$res = base64_encode($my_string);
echo $res; //dGVzdCBzdHJpbmc=
echo base64_decode($res); // test string
事实上,解码字符串:

base64_decode("RVByaW50cyBhbmQg2KfZhNi52LHYqNmK2Kk=")
返回如下内容:

EPrints and العربية
您得到的是电子邮件中用于非US-ASCII编码文本的语法:

格式为:
“=?字符集?编码?编码文本?=”

  • 字符集
    可以是注册到的任何字符集。通常,它与消息体是相同的字符集
  • 编码
    可以是表示与编码类似的Q编码的“Q”,也可以是表示编码的“B”
  • 编码文本
    是Q编码或base64编码文本。 -编码字的长度不能超过75个字符,包括字符集、编码、编码文本和分隔符。如果希望编码的文本多于75个字符的编码字,可以使用多个编码字(由CRLFSP分隔)
因此,这篇维基百科的小摘录也包含了如何解码字符串。当然,您不是第一个需要这样做的人,因此库是存在的。另见:


很抱歉没有说得更清楚,我确实称之为base64_decode(),它确实给了我
EPrints和§§§§§§§¨217ØØØبØØبØبØØبب¨¨¨Ø¨Ø¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨代码('Content-type:text/html;charset=utf-8');
和解码后字符串
echo base64_解码(“RVByaW50cyBhbmQg2KfZhNi52LHYqNmK2Kk=”);
谢谢,但正如我所说的,由于文本包含混合数据,我不能使用
base64_解码(“RVByaW50cyBhbmQg2KfZhNi52LHYqNmK2Kk=”)
,而是
base64_解码(“一些文本=?utf-8?b?RVByaW50cyBhbmQg2KfZhNi52LHYqNmK2Kk=?=”
,这会导致(?)转换失败非常感谢您!非常好的解释和修复,再次感谢!