2012-12-07 40 views
1

我有一個鸚鵡螺腳本複製曲調,我喜歡到一個特殊的文件夾,我同步到我的手機和我的車。它在具有像á這樣有趣角色的路徑上失敗。我用的東西逐漸固定它像:奇怪的字符編碼問題與蟒蛇/鸚鵡螺腳本組合

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

,但我越來越厭倦這些繃帶的解決方案,我敢肯定有一個更好的方式與str.encodestr.decode做到這一點。

有沒有人認識到這種奇怪的編碼,我怎麼能正確處理它?問題是,例如,我有一個文件夾,例如

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

我的硬盤上,但是當我得到它使用os.getenv('NAUTILUS_SCRIPT_CURRENT_URI'),即在鸚鵡螺當前選定的文件夾,它出現在Python作爲

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

然後其他操作(如重命名或複製文件)不起作用,因爲它沒有在磁盤上找到該文件。

回答

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 

在Python 3,您需要使用urllib.parse.unquote();該功能已移動。

+0

是的,工作完美,謝謝Martijn – wim