С именем файла, похожим на:
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 Django (ImageFileField), но к тому времени, когда я столкнулся с ней и увидел разницу в поведении, у меня есть единственная строка Unicode, которая является абсолютный путь к файлу.