• 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)

    输出结果:

  • 相关阅读:
    九九乘法表
    获取1-10 的和,并打印 2.1-100 之间 7 的倍数的个数,并打印
    1-100之间 7 的倍数的个数,并打印
    无限循环的最简单的表现形式
    for 和 while 区别
    do while 和 while 区别
    if 和 switch 比较
    星期和月份
    【运筹优化】求职与工作思考 -求职需要的技能(一)
    python 在线笔试的OJ输入输出总结
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/12914923.html
Copyright © 2020-2023  润新知