奇怪的字符编码问题与Python /鹦鹉螺脚本组合(Weird character encoding

2019-09-29 05:31发布

我有一个鹦鹉螺脚本复制的音乐,我喜欢到我同步到我的手机和我的车的特殊文件夹。 它无法与滑稽的人物,如在他们的路径。 我有一样的东西逐步修复它:

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

然后其他操作,如重命名或复制文件不起作用,因为它没有找到磁盘上的文件。

Answer 1:

您正在寻找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() ; 该功能被感动了。



文章来源: Weird character encoding issue with python / nautilus scripts combo