【问题标题】:Python3 script runs fine from shell but triggers UnicodeEncodeError within PHPPython3 脚本在 shell 中运行良好,但在 PHP 中触发 UnicodeEncodeError
【发布时间】:2019-06-03 15:47:20
【问题描述】:

考虑以下脚本:

#!/usr/bin/env python3

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

我正在尝试从 PHP 运行它:

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

它在 shell 中运行良好,但通过 PHP 崩溃:

UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 3: ordinal not in range(128)

如果我添加.encode('utf-8') PHP 打印字节编码字符串:

b'\xc3\xa9'

我该如何解决?在 python 脚本中添加 # -*- coding: utf-8 -*- 或在字符串前面加上 u 没有帮助,我认为 utf-8 应该是 python3 的默认值?

【问题讨论】:

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


    【解决方案1】:

    解决方法是显式设置PYTHONIOENCODING

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

    [Credits.]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      相关资源
      最近更新 更多