Странно `UnicodeEncodeError `с использованием `os.path.exists`

В веб-приложении -(, использующем Flask ), я получаю следующую ошибку:

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)

Обратите внимание, что я включаю repr()имени файла в зарегистрированную ошибку. Это показывает, что имя файла передается как экземпляр Unicode. Так много правильно...

Если я запускаю виновника с помощью интерпретатора Python, он работает так, как ожидалось:

>>> from os.path import exists
>>> exists(u'/var/data/uploads/2012/03/22/12 Gerd\xb4s Banjo Trio 1024.jpg')
True

Таким образом, очевидно, что при работе в среде Flask Python считает, что он должен кодировать имя файла -с использованием Кодек ASCII вместо UTF -8. Я развернул приложение, используя мод _wsgi за Apache httpd.

Я предполагаю, что мне нужно сказать одному из них использовать где-то UTF -8? Но где?

14
задан exhuma 1 May 2012 в 09:58
поделиться