如何用urllib3 request_encode_url编码拉丁字符?

时间:2016-05-15 14:17:56

标签: python python-3.x url-encoding urllib3

我有一个使用urllib3库下载网站html代码的功能。我正在使用request_encode_url函数通过GET传递参数,如果我不使用像'ñ'这样的特殊拉丁字符,它可以正常工作。如果我使用'ñ',则网址编码不正确。

例如,如果我传递像“Elseñor”这样的参数,则此函数将其转换为“El +señ”而不是“El + se%F1or”。

z='El señor'
fields={'sec':'search','value': z}
http = urllib3.PoolManager() 
r = http.request_encode_url('GET', 'http://www.myurl.com/search.php',fields)

预期的网址必须如下:

http://www.myurl.com/search.php?sec=search&value=El+se%F1or

但如果我使用特殊字符,我会获得下一个网址:

http://www.myurl.com/search.php?sec=search&value=El+señor

有人可以说我怎么能用特殊字符传递参数来编码正确的网址?

我正在使用Python 3.4

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,也许这是一个愚蠢的事情,但我的python级别很低。

我将它编码为latin1:

function showUnitBar(units) {
    $("#unit_bar").remove();
    $('.svg-container').append('<div id="unit_bar">'
        + '<input type="range" id="unit_input" value="1" min="1" max="' + (units - 1) + '"  oninput="document.getElementById('unit_output').innerHTML = this.value">'
        + '<output id="unit_output">1</output>'
        + '<input type="button" value="Send Units" id="send_units">'
        + '</div>');
}

showUnitBar(5);