[英]percent encoding URL with python
當我在maps.google.com中輸入網址時,例如https://dl.dropbox.com/u/94943007/file.kml ,它會將此網址編碼為:
https:%2F%2Fdl.dropbox.com%2Fu%2F94943007%2Ffile.kml
我想知道這個編碼叫什么,有沒有辦法使用python編碼這樣的URL?
我試過這個:
該過程稱為URL編碼 :
>>> urllib.quote('https://dl.dropbox.com/u/94943007/file.kml', '')
'https%3A%2F%2Fdl.dropbox.com%2Fu%2F94943007%2Ffile.kml'
但沒有得到預期的結果:
'https%3A//dl.dropbox.com/u/94943007/file.kml'
我需要的是這個:
https:%2F%2Fdl.dropbox.com%2Fu%2F94943007%2Ffile.kml
我如何正確編碼此URL?
這里的文件:
https://developers.google.com/maps/documentation/webservices/
狀態:
所有要進行URL編碼的字符都使用'%'字符和與其UTF-8字符對應的雙字符十六進制值進行編碼。 例如,UTF-8中的上海+中國將被URL編碼為%E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B。 字符串? 並且Mysterians將被URL編碼為%3F +和+ + Mysterians。
采用
urllib.quote_plus(url, safe=':')
由於您不希望冒號編碼,因此在調用urllib.quote()
時需要指定:
>>> expected = 'https:%2F%2Fdl.dropbox.com%2Fu%2F94943007%2Ffile.kml'
>>> url = 'https://dl.dropbox.com/u/94943007/file.kml'
>>> urllib.quote(url, safe=':') == expected
True
urllib.quote()
接受一個safe
的關鍵字參數,默認為/
並指示哪些字符被認為是安全的,因此不需要編碼。 在您的第一個示例中,您使用了''
導致斜杠被編碼。 您在下面沒有編碼斜杠的情況下粘貼的意外輸出可能來自之前沒有設置關鍵字參數safe
嘗試。
覆蓋默認值'/'
而不是用':'
排除冒號最終產生所需的結果。
編輯 :此外,API要求將空格編碼為加號。 因此,應該使用urllib.quote_plus()
(其關鍵字參數safe
不會默認為'/'
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.