1

好きな曲を特別なフォルダにコピーする Nautilus スクリプトがあり、それを携帯電話と車に同期しています。á のような変な文字が含まれるパスでは失敗します。次のようなもので段階的に修正しています:

temp = temp.replace('%20', ' ')
temp = temp.replace('%5B', '[')
temp = temp.replace('%5D', ']')

しかし、私はこれらの応急処置にうんざりしています. str.encodeorを使用してこれを行うより良い方法があると確信していstr.decodeます.

この奇妙なエンコーディングと、それを適切に処理する方法を知っている人はいますか? 問題は、たとえば、次のようなフォルダーがあることです

/media/music/kálmán balogh and the gipsy cimbalom band/aven shavale

私のディスクにはありos.getenv('NAUTILUS_SCRIPT_CURRENT_URI')ますが、nautilus で現在選択されているフォルダーを使用して取得すると、Python では次のように表示されます。

/media/music/k%C3%A1lm%C3%A1n balogh and the gipsy cimbalom band/aven shavale

ディスク上でファイルが見つからないため、ファイルの名前変更やコピーなどの他のアクションは機能しません。

4

1 に答える 1

2

あなたはURLエンコーディングを見ています。urllib.unquote()これらを UTF-8 でエンコードされたテキストに解釈し、Unicode にデコードするために使用します。

>>> import urllib
>>> urllib.unquote('/media/music/k%C3%A1lm%C3%A1n balogh and the gipsy cimbalom band/aven shavale').decode('utf8')
u'/media/music/k\xe1lm\xe1n balogh and the gipsy cimbalom band/aven shavale'
>>> print urllib.unquote('/media/music/k%C3%A1lm%C3%A1n balogh and the gipsy cimbalom band/aven shavale').decode('utf8')
/media/music/kálmán balogh and the gipsy cimbalom band/aven shavale

urllib.parse.unquote()Python 3 では、 ;を使用する必要があります。機能が移動しました。

于 2012-12-07T09:27:36.213 に答える