python2.7.15 url 链接参数中特殊字符的转码
python2.7.15 url 链接参数中特殊字符的转码:https://blog.csdn.net/SHSQLDLL/article/details/81872083
目的: http get 方式中的参数中含特殊字符如"=% ",转成"%3D%25%20"
###############################1
python升级后, 么有网上所的url转码了(暂时没有找到): from urllib import parse, 找到的urlparse.py也没有相关的转码.得自己处理这个参数的内容:
def getParmTrans(self,data):
# 1. + URL 中+号表示空格 %2B
# 2. 空格 URL中的空格可以用+号或者编码 %20
# 3. / 分隔目录和子目录 %2F
# 4. ? 分隔实际的 URL 和参数 %3F
# 5. % 指定特殊字符 %25
# 6. # 表示书签 %23
# 7. & URL 中指定的参数间的分隔符 %26
# 8. = URL 中指定参数的值 %3D
return "".join(["%%%X"%ord(i) if i in ['+',' ','/','?','%','#','&','='] else i for i in data])
###############################2
后来又看到urllib.py文件是有quote和unquote的, 用这两个函数即可, 中文和特殊字符都会转码,上一次#1方法不能转中文
>>> import urllib
>>> print urllib.quote("你好/ .?")
%C4%E3%BA%C3/%20.%3F
###############################3
还是需要过滤一下的, unicode的字符不能直接quote, 得转成\x0e类似这样的编码才成
def getParmTrans(self,data):
if type(data) == unicode:
data = data.encode("utf-8")
if isinstance(data,bool):
return data
else:
return urllib.quote(data)