z nazwy pliku, patrząc jak:Python open() Unicode zachowanie filename różnych systemów operacyjnych na całym
filename = u"/direc/tories/español.jpg"
i korzystania z open() jako:
fp = open(filename, "rb")
To będzie poprawnie otworzyć plik na OSX (10.7), ale w Ubuntu 11.04 funkcja open() spróbuje otworzyć u"espa\xf1ol.jpg"
, a to zakończy się niepowodzeniem z IOError.
Przez proces próbowania naprawienia tego, sprawdziłem sys.getfilesystemencoding()
na obu systemach, obie są ustawione na UTF-8 (chociaż Ubuntu zgłasza wielkie litery, np. UTF-8, nie jest pewien, czy jest to istotne). W pliku Pythona ustawiłem także # -*- coding: utf-8 -*-
, ale jestem pewien, że wpływa to tylko na kodowanie w samym pliku, nie na funkcje zewnętrzne ani na sposób, w jaki Python radzi sobie z zasobami systemowymi. Plik istnieje w obu systemach z prawidłowo wyświetlonym monitorem.
Końcowe pytanie brzmi: Jak otworzyć plik español.jpg
w systemie Ubuntu?
Edit: Ciąg español.jpg
jest rzeczywiście wychodzi z bazy danych za pośrednictwem ORM Django (ImageFileField), ale do czasu mam do czynienia z nim i zobaczyć różnicę w zachowaniu Mam jeden ciąg znaków Unicode, który jest absolutnym ścieżka do pliku.
Dla tego, co jest warte, '' \ xf1 "' jest reprezentacją ISO-8859-1 '' ñ "'. –
FYI, dotknąłem pliku o nazwie 'español.jpg' i otworzyłem go na swój sposób i działało poprawnie na moim Arch Linux. Czy możesz wkleić dane wyjściowe 'locale' swojego Ubuntu? –
'locale' podaje' en_US.UTF-8' dla wielu parametrów, w tym 'LANG'. – mrmagooey