pygtk覚書 drag&dropされたファイル名

pygtkのwidgetをDrag&Dropに対応させて、いろいろ遊んでいましたが、
ファイルパスに全角文字列が含まれている場合に、ファイルパスが正しく取得できない問題に気づきました。

文字コードの問題かな。。と思ったのですが、よくよく見てみると全角の部分や~, +, =などがquoteされた文字列(%7E%20%2Bなど)に置き換わっていました。
ずっと、decode()関数を使って文字コードを変換し、「ありゃ〜、なんで文字化けが直らないんだろ。。」って思ってました。。。

で、解決方法ですが。

import urllib

# urlStrにドロップされたファイルのurl文字列(file://〜)が入っているとして
str = urllib.unquote(urlStr).decode('utf-8')

でうまくいきました。

decode()する場合の引数'utf-8'の部分はお好みで。

urllibには、上記の逆の変換を行う quote()という関数もあります。
いやはや、今日もいい発見があってよかったです。