を使用して、私は次のようなエラーが奇妙な取得:私は、ファイル名のrepr()
を含めるは `UnicodeEncodeError`は(フラスコを使用して)Webアプリケーションで` os.path.exists`
Unable to retrieve the thumbnail for u'/var/data/uploads/2012/03/22/12 Gerd\xb4s Banjo Trio 1024.jpg'
Traceback (most recent call last):
File "/var/www/beta/env/lib/python2.7/site-packages/dblib-1.0dev3-py2.7.egg/dblib/orm/file.py", line 169, in get_thumbnail
if not exists(filename):
File "/usr/lib/python2.7/genericpath.py", line 18, in exists
os.stat(path)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb4' in position 52: ordinal not in range(128)
注意ログに記録されたエラー。これは、ファイル名がUnicodeインスタンスとして渡されることを示しています。フラスコ環境で実行されている、Pythonはそれがファイルをエンコードする必要があります考えている間、
>>> from os.path import exists
>>> exists(u'/var/data/uploads/2012/03/22/12 Gerd\xb4s Banjo Trio 1024.jpg')
True
だから、明らかに:あまりにも多く、私はPythonインタプリタを使用して犯人を実行する場合、期待どおり、それが動作する...
正しいですか-nameは、UTF-8ではなくASCIIコーデックを使用します。 Apache httpdの後ろにmod_wsgiを使ってアプリケーションをデプロイしました。
どこかの人にUTF-8を使用するように指示しなければならないと思いますか?しかしここで?
が、これは適切な解決策だとは思わないが、同様の状況で、私が見つけたときに自分が使用して'string'.encode(' utf8 ')はトリックを行います。ショットに値する可能性があります。 –
設定の問題だと思います。だから、私が正しい設定を見つけ出すまで、私はそれが起こるたびに電子メールで私に腹を立てるtry/exceptブロックでそれを守っただけです:Pそれはエラーです。それを思い出してほしいです:) – exhuma