簡體   English   中英

使用python編碼URL的百分比

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM