У меня была похожая проблема, и я решил ее следующим образом.Я не понимаю, зачем это нужно, поскольку я все уже обработал с помощью UTF-8.Вызов моего скрипта Python из командной строки работал, но не с exec (shell_exec) через PHP и Apache.
Согласно записи php на форуме этот нужен, когда вы хотите использовать escapeshellarg()
:
setlocale(LC_CTYPE, "en_US.UTF-8");
Он должен быть вызван перед выполнением escapeshellarg()
.Кроме того, необходимо было установить определенную переменную окружения Python перед командой exec (найдена несвязанная подсказка здесь ):
putenv("PYTHONIOENCODING=utf-8");
Мой скрипт Python оцениларгументы, подобные этому:
sys.argv[1].decode("utf-8")
(Подсказка: это было необходимо, потому что я использую библиотеку для преобразования некоторых арабских текстов.)
Итак, наконец, я мог представить, чтоисходный вопрос можно решить следующим образом:
setlocale(LC_CTYPE, "en_US.UTF-8");
putenv("PYTHONIOENCODING=utf-8");
$tables = shell_exec('/s/python-2.6.2/bin/python2.6 getWikitables.py ' .
escapeshellarg($title));
Но я не могу ничего сказать о возвращаемом значении.В моем случае я мог без проблем вывести его в браузер.
Потратил много-много часов, чтобы выяснить это ... Одна из ситуаций, когда я ненавижу свою работу; -)