如何区分百分比编码的URL和未编码的百分比URL?

时间:2016-03-17 09:12:05

标签: python python-3.x urllib

我收到2个模式URL,编码百分比,未编码百分比。 然后我的代码不能与input_url_B一起使用,因为它已经编码了。 我该如何解决它,或者你有什么想法?

from urllib.parse import urlparse, parse_qs, urlencode

if __name__ == '__main__':
    input_url_A = "http://sample.jp/api?v1=aaa&v2=日本語&v3=ccc"
    input_url_B = "http://sample.jp/api?v1=aaa&v2=%93%fa%96%7b%8c%eav3=ccc"  # '%93%fa%96%7b%8c%ea' = '日本語'

    # Pattern A is OK.
    parsed = urlparse(input_url_A)
    query = parse_qs(parsed.query)
    fixed_url = parsed._replace(query=urlencode(query, doseq=True)).geturl()
    print(fixed_url)  # 'http://sample.jp/api?v3=ccc&v2=%E6%97%A5%E6%9C%AC%E8%AA%9E&v1=aaa'
    resp = urllib.request.urlopen(fixed_url)

    # Pattern B is NG.
    parsed = urlparse(input_url_B)
    query = parse_qs(parsed.query)
    fixed_url = parsed._replace(query=urlencode(query, doseq=True)).geturl()
    print(fixed_url) # 'http://sample.jp/api?v2=%EF%BF%BD%EF%BF%BD%EF%BF%BD%7B%EF%BF%BD%EF%BF%BDv3%3Dccc&v1=aaa'
    resp = urllib.request.urlopen(fixed_url)

REF: 我以前的问题。 How can I create a percent encoded URL from complete URL?

0 个答案:

没有答案