Python urllib2和urlopen与utf-8标志

时间:2015-06-01 12:08:39

标签: python unicode encoding urllib2

如何将unicode字符串传递给urllib2.urlopen(url)函数?

我想访问带有utf-8编码网址的pdf文件:

<a href="investments-%C2%A7-73g-legal.html">Link to pdf</a>

其中%C2%A7代表部分符号:§

如果我将此unicode url字符串传递给urlopen方法,则会抛出异常:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xa7' in position 105: ordinal not in range(128)

如果我忽略编码错误:url.encode("ascii",errors='ignore')链接地址已无效。

有人能给我一个如何解决这个问题的提示吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

沿着这些行尝试一些东西,在b中,你会找到一个适合urllib2的utf8字符串(你必须用一个有意义的位置完成它,尽管......)。顺便说一句,打印已解码的 b 会显示§

import urllib
import urllib2
a='investments-%C2%A7-73g-legal.html'
b=urllib.unquote(a)

print (b.decode('utf8'))

urllib2.urlopen('http://localhost/' + b)