URL的編碼 解碼

2021-08-28 17:07:06 字數 2006 閱讀 7601

通常如果一樣東西需要編碼,說明這樣東西並不適合傳輸。原因多種多樣,如size過大,包含隱私資料。對於url來說,之所以要進行編碼,是因為url中有些字元會引起歧義。

例如,url引數字串中使用key=value鍵值對這樣的形式來傳參,鍵值對之間以&符號分隔,如/s?q=abc&ie=utf-8。如果你的value字串中包含了=或者&,那麼勢必會造成接收url的伺服器解析錯誤,因此必須將引起歧義的&和=符號進行轉義,也就是對其進行編碼。

又如,url的編碼格式採用的是ascii碼,而不是unicode,這也就是說你不能在url中包含任何非ascii字元,例如中文。否則如果客戶端瀏覽器和服務端瀏覽器支援的字符集不同的情況下,中文可能會造成問題。

import urllib

rawurl=***

url=urllib.unquote(rawurl)

所用模組:urllib

所用函式:urllib.unquote()

案例

import urllib

rawurl = "%e6%b2%b3%e6%ba%90"

url = urllib.unquote(rawurl)

print url

輸出

河源
問題擴充套件

urllib.unquote()目的是對url編碼進行解碼,與該函式對應的是編碼函式urllib.quote()

>>> import urllib

>>> urllib.quote("河源")

'%e6%b2%b3%e6%ba%90

python2 與python3版本不相容的問題真是讓人詬病,現在又報錯了,我的錯誤資訊為:

traceback (most recent call last):

file "/users/eric/documents/pythonfiles/aliyunxiaomi/chatwithxiaomi/chatwithali.py", line 22, in

canstring += '&' + percentencode(k) + '=' + percentencode(v)

file "/users/eric/documents/pythonfiles/aliyunxiaomi/chatwithxiaomi/chatwithali.py", line 14, in percentencode

res = urllib.quote(str.decode(sys.stdin.encoding).encode('utf8'), '')

attributeerror: module 'urllib' has no attribute 'quote'

import urllib.parse

def percentencode(str):

res = urllib.parse.quote(str, '')

res = res.replace('+', '%20')

res = res.replace('*', '%2a')

res = res.replace('%7e', '~')

return res

這樣就不包錯誤了。

URL編碼 解碼

url編碼 通過頁面傳輸資料給伺服器時,如果包含了一些特殊字元是無法傳送的。這時就需要先把要傳送的資料轉換成url編碼格式,再傳送給伺服器。伺服器會自動識別出資料是使用url編碼過的,然後會自動把資料轉換回來 url編碼 解碼的4個方法 encodeurl encodeurlcomponent de...

url 編碼和解碼

1.url編碼 ios中http請求遇到漢字的時候,需要轉化成utf 8,用到的方法是 nsstring encodingstring urlstring stringbyaddingpercentescapesusingencoding nsutf8stringencoding 2.url解碼 請...

url編碼和解碼

1.url編碼 ios中http請求遇到漢字的時候,需要轉化成utf 8,用到的方法是 nsstring encodingstring urlstring stringbyaddingpercentescapesusingencoding nsutf8stringencoding 2.url解碼 請...