私はPythonプログラムがうまく動作しています。いくつかのウェブサイトに接続し、必要な情報を出力します。すべてのウェブサイトがutf-8でエンコードされているわけではないので、ヘッダーから文字セットを要求し、unicode(string, encoding)
メソッドを使用してデコードしています(これを行う適切な方法かどうかはわかりませんが、私がPythonプログラムを実行すると、私はno ???マークとそれは正常に動作します。私はPHPのsystem
機能を使用してプログラムを実行するときしかし、私はこのエラーが表示されます。phpシステム、python、utf-8
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0131' in position 41: ordinal not in range(128)
これは、Python固有のエラーですが、何を私に混乱することは、私は、端末を使用してプログラムを実行したときに、私はこのエラーを受信しないということです。私はPHPのsystem
関数を使用し、phpからプログラムを呼び出すときにのみこれを受け取ります。この問題の原因は何でしょうか?ここで
はサンプルコードです:Pythonプログラムを呼び出す
PHPコード:
system("python somefile.py $search") // where $search is the variable coming from an input
のpythonコード:
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
おそらく環境変数です。 –