2016-12-02 13 views
0

Системный вызов существует в PHP таким образом, чтоИспользование UTF-8 для PHP системного вызова Python

system("python3 returnUTF8.py") 

Если я запустить сценарий Python в командной строке Linux - это прекрасно работает, однако, когда я использую PHP Системная команда Я получаю сообщение об ошибке «UnicodeEncodingError - не может кодироваться в ascii» ...

Я понимаю, что проблема заключается в том, что функция печати в Python по умолчанию принимает результат, который требуется вызывающему, и это отображается, когда я запускаю print (sys.stdout.encoding) в командной строке я получаю UTF-8 и от системного вызова получаю ANSI_X3.4-1960.

Как изменить системный вызов в PHP или скрипте Python для использования кодировки UTF-8?

ответ

3

Вам нужно указать Python, какую кодировку использовать; обычно это берется из языкового стандарта вашего терминала, но когда вы используете system(), такой языковой стандарт отсутствует, а затем используется кодировка локали по умолчанию C, которая равна ANSI_X3.4-1960 (aka ASCII).

PYTHONIOENCODING environment variable Установите:

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

или явно кодировать UTF-8 в вашей программе.

+0

Большое вам спасибо! Это привело к 2-часовым разочарованиям. :) – seanbulley