С именем файла, похожим на:
filename = u"/direc/tories/español.jpg"
И используя open () как:
fp = open(filename, "rb")
Это откроет файл правильно в OSX (10.7), но в Ubuntu 11.04функция open () попытается открыть u"espa\xf1ol.jpg"
, и это приведет к ошибке IOError.
В процессе попытки исправить это я установил sys.getfilesystemencoding()
в обеих системах, обе установлены на utf-8 (хотя Ubuntu сообщает верхний регистр, то есть UTF-8, не уверен, что это актуально),Я также установил # -*- coding: utf-8 -*-
в файле python, но я уверен, что это влияет только на кодировку внутри самого файла, а не на какие-либо внешние функции или на то, как python работает с системными ресурсами.Файл существует в обеих системах с правильно отображенным eñe.
Последний вопрос: как открыть файл español.jpg
в системе Ubuntu?
Редактировать: строка español.jpg
на самом деле выходит из базы данных через ORM Джанго (ImageFileField), но к тому времени, когда я имею дело с этим и вижу разницу в поведении, у меня есть единственная строка юникода, которая является абсолютным путем к файлу.