Скрипт Python3 отлично запускается из оболочки, но запускает UnicodeEncodeError в PHP - PullRequest
0 голосов
/ 03 июня 2019

Рассмотрим следующий скрипт:

#!/usr/bin/env python3

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

Я пытаюсь запустить его из PHP:

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

Отлично работает из оболочки, но вылетает через PHP:

UnicodeEncodeError: кодек 'ascii' не может кодировать символ '\ xe9' в позиции 3: порядковый номер не в диапазоне (128)

И если я добавлю .encode('utf-8') PHP напечатает строку в кодировке байтов:

b '\ xc3 \ xa9'

Как я могу это исправить? Добавление # -*- coding: utf-8 -*- к сценарию Python или добавление префикса к строке u не помогло, и я подумал, что utf-8 должен был быть по умолчанию для python3?

1 Ответ

0 голосов
/ 03 июня 2019

Исправление - установить PYTHONIOENCODING явно:

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

[ Credits. ]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...