python處理url特殊符號-編碼問題


說明 

當url地址含有中文,或者參數有中文的時候,這個算是很正常了,但是把這樣的url作為參數傳遞的時候(最常見的callback),需要把一些中文甚至'/'做一下編碼轉換。

RFC3986文檔規定,Url中只允許包含以下四種:              

     1、英文字母(a-zA-Z)
     2、數字(0-93、-_.~ 4個特殊字符
     4、所有保留字符,RFC3986中指定了以下字符為保留字符(英文字符):     ! * ' ( ) ; : @ & = + $ , / ? # [ ]

 

所以對於一些中文或者字符,url不識別的,則需要進行轉換

 

一、urlencode

urllib庫里面有個urlencode函數,可以把key-value這樣的鍵值對轉換成我們想要的格式,返回的是a=1&b=2這樣的字符串,比如:

1
2
3
4
5
6
7
import urllib.parse
values={}
values['username']='02蔡彩虹'
values['password']='ddddd?'
data=urllib.parse.urlencode(values)
print(data)

結果如下:

如果只想對一個字符串進行urlencode轉換,怎么辦?urllib提供另外一個函數:quote()

1
2
3
4
import urllib.parse
s='長春'
s=urllib.parse.quote(s)
print(s)

輸出結果為:

二、urldecode

當urlencode之后的字符串傳遞過來之后,接受完畢就要解碼了——urldecode。urllib提供了unquote()這個函數,可沒有urldecode()!

1
2
3
s='%E5%B9%BF%E5%B7%9E'
s=urllib.parse.unquote(s)
print(s)
 

輸出結果為:

 

 

自已動手試試python處理url編碼:

import urllib.parse url ='http://jira.XXX.com/secure/RapidBoard.jspa?rapidView=187&projectKey=OFFICIAL&selectedIssue=OFFICIAL-5837'
#編碼
data = urllib.parse.quote(url) print('編碼后',data) #解碼
finall_url=urllib.parse.unquote(data) print('解碼后',finall_url)

輸出結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM