使用 UTF-8 进行 PHP 系统调用 Python

Using UTF-8 for PHP System call to Python

PHP 中存在系统调用,因此

system("python3 returnUTF8.py")

如果我 运行 Linux 命令行上的 Python 脚本 - 它工作正常,但是当我使用 PHP 系统命令时,我得到一个错误 "UnicodeEncodingError - can't encode to ascii"...

我理解问题是 Python 中的打印函数默认为调用者想要的结果,当我在命令行上 运行 print (sys.stdout.encoding) 时显示了这一点得到 UTF-8 并从系统调用中得到 ANSI_X3.4-1960.

如何更改 PHP 或 Python 脚本中的系统调用以使用 UTF-8 编码?

您需要告诉 Python 使用什么编码;通常这是从您的终端语言环境中获取的,但是当您使用 system() 时,没有这样的语言环境,然后使用默认的 C 语言环境编码,即 ANSI_X3.4-1960(又名 ASCII)。

设置PYTHONIOENCODING environment variable:

system("PYTHONIOENCODING=utf-8 python3 returnUTF8.py")

或在您的程序中显式编码为 UTF-8。