Рассмотрим следующий скрипт:
#!/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?