如何在Python中编码和解码百分比编码(URL编码)字符串?

时间:2015-10-15 08:28:46

标签: python encoding

我写了一个简单的应用程序,从wiki页面下载文章。当我搜索例如名字Lech时,我的代码会返回Lech_Kaczy%C5%84skiLech_Pozna%C5%84而不是Lech_KaczyńskiLech_Poznań等字符串。

如何将这些字符解码为普通的抛光字母?我试着用: urllib.unquote(text)但后来得到Lech_Kaczy\xc5\x84skiLech_Pozna\xc5\x84而不是Lech_KaczyńskiLech_Poznań

我的代码中有:

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

但结果是一样的(它根本不起作用)。

3 个答案:

答案 0 :(得分:5)

试试这个:

import urllib
urllib.unquote("Lech_Kaczy%C5%84ski").decode('utf8')

这将返回一个unicode字符串:

u'Lech_Kaczy\u0144ski'

然后您可以像往常一样打印和处理。例如:

print(urllib.unquote("Lech_Kaczy%C5%84ski").decode('utf8'))

将导致

Lech_Kaczyński

答案 1 :(得分:5)

对于Python 3,_id现在位于unquote之内:

urllib.parse

答案 2 :(得分:0)

这对我有用:

import urllib

print urllib.unquote('Lech_Kaczy%C5%84ski')

打印出

Lech_Kaczyński