2

我无法使用 urllib2.urlopen() 请求 url“http://www.besondere-raumdüfte.de”。
我尝试使用带有 utf-8、idna、ascii 的 urllib.urlencode 对字符串进行编码,但仍然无法正常工作。
提高URLError: <urlopen error unknown url type

4

2 回答 2

2

你需要的是u"http://www.besondere-raumdüfte.de/".encode('idna'). 请注意源字符串如何是 Unicode 常量(u前缀)。

结果是一个可用于 的 URL urlopen()

如果您的域名包含非 ASCII 字符,并且URL 的其余部分包含非 ASCII 字符,.encode('idna')则需要域部分和iri2uri()其余部分。

于 2012-03-27T12:15:50.520 回答
0

您正在使用iri而不是uri,您需要做的是正确转换它。以下是有关如何执行此操作的示例:

from httplib2 import iri2uri

def iri_to_uri(iri):
    """Transform a unicode iri into a ascii uri."""
    if not isinstance(iri, unicode):
        raise TypeError('iri %r should be unicode.' % iri)
    return bytes(iri2uri(iri))

一旦你有了一个 uri,你应该能够使用 urllib2。

于 2012-03-27T10:00:28.790 回答