2015-06-01 44 views
0

如何將一個unicode字符串傳遞給urllib2.urlopen(url)函數?Python urllib2和urlopen使用utf-8標誌

我要訪問的PDF文件與UTF-8編碼的網址:

<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')鏈接ADRESS不是v再也沒有了。

任何人都可以給我一個提示如何解決這個問題?

非常感謝您

+1

你究竟傳遞給'的urlopen()'什麼?你能給我們'print(repr(url_you_used))'的輸出嗎? –

+0

u'177.23.125.41/2013-12-20-investments- \ xa7-7g-legal-zwe.pdf' –

回答

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) 
+0

您好thx到目前爲止,我試過你的解決方案,但我仍然得到例外'ascii'編解碼器可以' t編碼字符u'\ xa7'在位置105:序號不在範圍內(128) –

+0

在什麼聲明你會得到那個錯誤?你可以發佈引發異常的代碼嗎? – FinalState

相關問題