В веб-приложения (используя колба), я получаю следующее сообщение об ошибке:Странная `UnicodeEncodeError` используя` 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)
Обратите внимание, что я включаю repr()
имени файла в зарегистрированная ошибка. Это показывает, что имя файла передается как экземпляр 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 с использованием кодека ASCII вместо UTF-8. Я развернул приложение, используя mod_wsgi за Apache httpd.
Предполагаю, что я должен сказать одному из них, чтобы где-то использовать UTF-8? Но где?
Не думаю, что это правильное решение, но когда в подобных ситуациях, я считаю, что я использую 'string'.encode (' utf8 ') делает трюк - возможно, стоит сделать снимок. –
Я уверен, что это проблема конфигурации. Поэтому, пока я не выяснил правильную настройку, я просто охранял ее с помощью try/except block, набирая меня электронными письмами каждый раз, когда это происходит: P Это ошибка, и я хочу напомнить об этом :) – exhuma