У меня очень хорошо работает программа на Python. Он подключается к нескольким веб-сайтам и выводит необходимую информацию. Так как не все сайты кодируются с помощью utf-8, я запрашиваю кодировку из заголовков и использую метод unicode(string, encoding)
для декодирования (я не уверен, является ли это подходящим способом, но он работает довольно хорошо). Когда я запускаю программу Python, я получаю нет ??? отмечает, и это работает отлично. Но когда я запускаю программу, используя php system
, я получаю эту ошибку:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0131' in position 41: ordinal not in range(128)
Это ошибка, специфичная для python, но меня смущает то, что я не получаю эту ошибку, когда запускаю программу с помощью терминала. Я получаю это только когда использую функцию php system
и вызываю программу из php. Что может быть причиной этой проблемы?
Вот пример кода:
PHP-код, который вызывает программу на Python:
system("python somefile.py $search") // where $search is the variable coming from an input
код питона:
encoding = "iso-8859-9"
l = "some string here with latin characters"
print unicode("<div class='line'>%s</div>" % l, encoding)
# when I run this code from terminal it works perfect and I receive no ??? marks
# when I run this code from php, I receive the error above