Unicode для PHP exec

У меня есть файл Python, который я вызываю с помощью функции exec PHP. Затем Python выводит строку (по-видимому, Unicode, основанную на использовании isinstance ), которая повторяется PHP. Проблема, с которой я сталкиваюсь, заключается в том, что если моя строка содержит в себе какие-либо специальные символы (например, символ степени), она не будет выводиться. Я уверен, что мне нужно что-то сделать, чтобы возиться с кодировкой, но я не совсем уверен, что делать и почему.

EDIT: чтобы получить представление о том, как я exec , см. Следующий фрагмент кода:

 $tables = shell_exec('/s/python-2.6.2/bin/python2.6 getWikitables.py '.$title); 

Python правильно выводит строку, когда я вызываю getWikitables.py сам по себе.

EDIT: Это определенно похоже на что-то либо на конец Python, либо на передачу результатов. Когда я запускаю strlen для возвращаемых значений в PHP, я получаю 0. Может ли exec принимать только определенный тип кодирования?

На php вы можете использовать такие методы, как utf8_encode() или utf8_decode() чтобы решить вашу проблему.

Попробуйте установить переменную среды LANG непосредственно перед выполнением скрипта Python на http://php.net/shell-exec#85095 :

 shell_exec(sprintf( 'LANG=en_US.utf-8; /s/python-2.6.2/bin/python2.6 getWikitables.py %s', escapeshellarg($title) )); 

(использование sprintf() чтобы (надеюсь) сделать немного легче следовать за длинной строкой)

Возможно, вам также понадобится сделать это, прежде чем вызывать shell_exec() , за http://php.net/shell-exec#78279 :

 $locale = 'en_US.utf-8'; setlocale(LC_ALL, $locale); putenv('LC_ALL='.$locale);