python3中的url編碼和解碼

2021-09-11 11:43:04 字數 1505 閱讀 3917

在用python進行web開發的時候,當url中含有中文,那麼傳遞到後台伺服器的會是編碼過的url,我們可以用python3把編碼後的文字轉化成我們可以識別的內容。如下操作:

import urllib

test_str = "哈哈哈"

print(test_str)

new = urllib.parse.quote(test_str)

print(new)

old = urllib.parse.unquote(new)

print(old)

執行**,執行結果如下:

哈哈哈

%e5%93%88%e5%93%88%e5%93%88

哈哈哈

中間的%e5%93%88%e5%93%88%e5%93%88就是經過url編碼後的內容。

利用pycharm開發工具,我們可以看一下quote編碼函式和unquote解碼函式的構成。

關於quote函式:

def quote(string, safe='/', encoding=none, errors=none):

if isinstance(string, str):

if not string:

return string

if encoding is none:

encoding = 'utf-8'

if errors is none:

errors = 'strict'

string = string.encode(encoding, errors)

else:

if encoding is not none:

raise typeerror("quote() doesn't support 'encoding' for bytes")

if errors is not none:

raise typeerror("quote() doesn't support 'errors' for bytes")

return quote_from_bytes(string, safe)

我們可以看到文字的預設編碼方式是utf-8編碼,我們可以更換成另一種編碼方式來看一下輸出結果

test_str = "哈哈哈"

print(test_str)

new = urllib.parse.quote(test_str, encoding="gbk")

print(new)

old = urllib.parse.unquote(new, encoding="gbk")

print(old)

輸出結果:

哈哈哈%b9%fe%b9%fe%b9%fe

哈哈哈

根據結果也可以了解到urf-8編碼乙個漢字被編為3個百分號開頭的字串,而gbk編碼乙個漢字被編為2個百分號開頭的字串。unqoute也是同樣的道理,故不再贅述。

Python3的URL編碼解碼

前言 最近在用python3練習一些爬蟲指令碼的時候,發現一些url的編碼問題,在瀏覽器提交請求api時,如果url中包含漢子,就會被自動編碼掉。呈現的結果是 xx xx xx。如果出現3個百分號為乙個原字元則為utf8編碼,如果2個百分號則為gb2312編碼。下面為大家演示編碼和解碼的 from ...

Python3中的編碼

1.編碼 1.1 ascii 乙個字元佔8位,1.2 utf 8 乙個字元佔8位 乙個中文佔24位 1.3 gbk 乙個字元佔8位 乙個中文佔16位 1.4 unicode 1.4 只說unicode的32位 乙個字元佔32位 乙個中文字同樣佔32位 問題 unicode中的編碼方式能否utf 8中...

python3編碼宣告 python3編碼問題彙總

這兩天寫了個監測網頁的爬蟲,作用是跟蹤乙個網頁的變化,但執行了一晚出現了乙個問題。希望大家不吝賜教!我用的是python3,錯誤在對html response的decode時丟擲,原樣為 response urllib.urlopen dsturl content response.read dec...