В веб-приложении -(, использующем 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? Но где?