間で異なるオープン()Unicodeのファイル名の挙動:Pythonのように見えるファイル名でのOS
filename = u"/direc/tories/español.jpg"
また、オープン使用して()のように:
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
文字列が実際にDjangoのORM(ImageFileField)を介してデータベースから出てきているが、私はそれに対処し、動作の違いを見ている時間によって、私は絶対的である、単一のUnicode文字列を持っていますファイルへのパス。
「\ xf1」は、ISO-8859-1の '' '' 'の表現です。 –
参考までに、私は 'español.jpg'という名前のファイルに触れ、あなたの方法でそれを開き、私のアーチLinuxで正しく動作しました。あなたのUbuntuの 'locale'出力を貼り付けることができますか? –
'locale'は' LANG'を含む多くのパラメータに対して 'en_US.UTF-8'を与えます。 – mrmagooey