PHP UTF8解码不适用于从python返回的out

PHP UTF8解码不适用于从python返回的out,php,python,utf-8,Php,Python,Utf 8,我从python服务器得到一个回复,基本上我正在发送一篇文章,而python代码正在发送文章中的重要标记。我得到的答复是这样的 "keywords": "[u'Smartphone', u'Abmessung', u'Geh\xe4userand']" <pre>"Smartphone"</pre><pre>"Abmessung"</pre><pre>"Geh\xe4userand"</pre> 所以我想用utf8对Ge

我从python服务器得到一个回复,基本上我正在发送一篇文章,而python代码正在发送文章中的重要标记。我得到的答复是这样的

"keywords": "[u'Smartphone', u'Abmessung', u'Geh\xe4userand']"
<pre>"Smartphone"</pre><pre>"Abmessung"</pre><pre>"Geh\xe4userand"</pre>
所以我想用utf8对Geh\xe4userand字符串进行解码。我在一些帖子中读到,我必须把它放在“”中进行解码,但它不起作用。我的代码是

$tags = str_replace("'",'"',$tags);
$tags = preg_replace('/\[*\s*u(".*?")\]*/', "$1", $tags);
$tags = explode(',', $tags);
    foreach ($tags as $tag) {
        pr(utf8_encode($tag));
    }
    die;
我得到的结果是

“智能手机”“Abmessung”“Geh\xe4userand”

我没有访问python代码的权限。

如果可行,请修复python代码;它向您发送一个带有Unicode转义的Python列表文本,而不是UTF8。理想情况下,它应该向您发送JSON

\xe4
字符序列对代码点U+00E4进行编码,但它使用4个ASCII文字字符(
\
x
e
4

其他Python文字规则:

  • 它将使用单引号或双引号,具体取决于内容,并首选单引号。因此,您可能必须处理转义的
    \'
    单引号
  • 换行符、回车符和制表符分别转义到
    \n
    \r
    \t
  • 所有其他不可打印的拉丁-1字符转义为
    \xhh
    ,这是一种编码点的两位十六进制编码
  • 如果文字以
    u
    开头,则它是一个Unicode字符串,而不是字节字符串,并且拉丁语-1子集之外但基本多语言平面的一部分的任何代码点转义到
    \uhhh
    ,即u+0100到u+FFFF范围内的代码点的四位十六进制编码
  • 在Unicode字符串中,您还可以找到
    \Uhhhhhhhh
    ,一个八位十六进制编码的非BMP Unicode代码点,范围从U+00010000到U+0001FFFF

改为修复Python代码;它向您发送一个带有Unicode转义的Python列表文本,而不是UTF8。它很可能会向您发送JSON。
\xe4
字符序列对代码点U+00E4进行编码,但它是4个文字ASCII字符。如果无法修复Python代码,则必须翻译所有
\xhh
2-hex代码,以将其映射到拉丁-1代码点。任何
\uhhhh
4-hex码都是Unicode码点,
\uhhhhh
8-hex码点用于BMP之外的Unicode码点,然后还有
\n
\r
\t
换行码,回车和制表符。将十六进制替换为适当的字符,因为更改python代码不会很快发生。thanx@Martijn Pieters