python2.7.15 url 链接参数中特殊字符的转码

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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值