我收到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?