Python3 脚本在 shell 中运行良好,但在 PHP 中触发 UnicodeEncodeError
Posted
技术标签:
【中文标题】Python3 脚本在 shell 中运行良好,但在 PHP 中触发 UnicodeEncodeError【英文标题】:Python3 script runs fine from shell but triggers UnicodeEncodeError within PHP 【发布时间】: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 的默认值?
【问题讨论】:
【参考方案1】:解决方法是显式设置PYTHONIOENCODING
:
<?php
system("PYTHONIOENCODING=utf-8 /usr/bin/python3 /my/script.py");
?>
[Credits.]
【讨论】:
以上是关于Python3 脚本在 shell 中运行良好,但在 PHP 中触发 UnicodeEncodeError的主要内容,如果未能解决你的问题,请参考以下文章
Python脚本通过shell运行但不能通过supervisord运行
init 脚本在 databricks 笔记本中运行良好,但在附加到集群时失败
应用程序在 Python2 和 Python3 中的 Windows 上运行良好,但收到错误:无法导入 android,并且按钮无响应