Python3脚本可从外壳正常运行,但会在PHP中触发UnicodeEncodeError

时间:2019-06-03 15:47:20

标签: php python-3.x character-encoding

考虑以下脚本:

#!/usr/bin/env python3

print("<h1>é</h1>")

我正在尝试从PHP运行它:

<?php
    system("/usr/bin/python3 /my/script.py");
?>

它在shell上工作正常,但通过PHP崩溃:

  

UnicodeEncodeError:'ascii'编解码器无法在位置3编码字符'\ xe9':序数不在范围内(128)

如果我添加.encode('utf-8'),PHP将输出字节编码的字符串。

  

b'\ xc3 \ xa9'

我该如何解决?将# -*- coding: utf-8 -*-添加到python脚本中或在字符串前面加上u无济于事,我认为utf-8应该仍然是python3的默认值吗?

1 个答案:

答案 0 :(得分:0)

一种解决方法是显式设置PYTHONIOENCODING

<?php
    system("PYTHONIOENCODING=utf-8 /usr/bin/python3 /my/script.py");
?>

[Credits.]