在我們進行數據傳參訪問的時候,HTTP協議的參數通常以鍵值對的形式出現,多個參數之間用 &分隔,但是如果值是中文或者是其他特殊字符的話,就要對其進行轉碼,不然可能會產生歧義,我們接下來就來看下如何對中文進行轉碼:
from urllib import parse
str = '中國'
print(parse.quote(str)) # 對中文進行編碼
print(parse.unquote(parse.quote(str))) # 進行解碼操作
# 輸出結果:
# %E4%B8%AD%E5%9B%BD
# 中國
之前也有講過,不同網站的編碼格式也是會有差別的,這時候我們就需要根據他們的編碼格式進行調整,先將文字轉換爲網站相同的編碼,然後再進行轉碼:
from urllib import parse
str = '中國'
print(str)
print(parse.quote(str.encode('gbk')))
print(parse.quote(str.encode('utf-8')))
# 輸出結果:
# 中國
# %D6%D0%B9%FA
# %E4%B8%AD%E5%9B%BD
那麼我們在編程的時候會經常看見encode和decode,他們之間分別代表什麼呢?
str = '中國' # 我們需要進行編解碼的字符
str1 = str.encode('gbk') # 我們設置編碼格式爲GBK
str2 = str.encode('utf-8') # 設置編碼格式爲utf-8
print(str1)
print(str2)
# 如果這裏輸出str2.decode('gbk')就會報錯,因爲編碼格式不匹配
print(str2.decode('utf-8')) # 將字符解碼輸出
# 輸出結果:
# b'\xd6\xd0\xb9\xfa'
# b'\xe4\xb8\xad\xe5\x9b\xbd'
# 中國