我需要从一个包含非ASCII字符的URL中提取数据,但是urllib2.urlopen拒绝打开该资源并引发以下错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0131' in position 26: ordinal not in range(128)
我知道这个URL不符合标准,但我没有机会去改变它。
那么,如何使用Python访问一个包含非ASCII字符的URL指向的资源呢?
编辑:换句话说,urlopen能否打开像这样的URL:
http://example.org/Ñöñ-ÅŞÇİİ/
import urllib.parse
而不是urlparse
。在urlEncodeNonAscii
中解码b:b.decode('utf-8')
,并将IRI的idna部分排除在iriToUri
之外:return urllib.parse.urlunparse([url_encode_non_ascii(part.encode('utf-8')) for part in parts])
。 - RvdBerg