zoukankan      html  css  js  c++  java
  • 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)

    输出结果:

  • 相关阅读:
    智力题:砝码称重问题
    Java:Comparator接口
    机器学习中比较重要的几个概念
    NLP:Gensim库之word2vec
    Java遍历Map对象的四种方式
    给数据库减负刻不容缓:多级缓存设计
    CentOS6.10安装redis5.0
    Linux下安装whl文件
    Linux下安装Gensim
    Linux下安装jieba
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/12914923.html
Copyright © 2011-2022 走看看