精华内容
下载资源
问答
  • 前言博主最近在用python3比较强大的Django开发web的时候,发现一些url编码问题,在浏览器提交请求api时,如果url中包含汉子,就会被自动编码掉。呈现的结果是 ==> %xx%xx%xx。如果出现3个百分号为一个原字符则为...

    前言

    博主最近在用python3比较强大的Django开发web的时候,发现一些url的编码问题,在浏览器提交请求api时,如果url中包含汉子,就会被自动编码掉。呈现的结果是 ==> %xx%xx%xx。如果出现3个百分号为一个原字符则为utf8编码,如果2个百分号则为gb2312编码。下面为大家演示编码和解码的代码。

    编码from urllib.parse import quote

    text = quote(text, 'utf-8')

    注:text为要进行编码的字符串

    解码from urllib.parse import unquote

    text = unquote(text, 'utf-8')

    源码def unquote(string, encoding='utf-8', errors='replace'):

    """Replace %xx escapes by their single-character equivalent. The optional

    encoding and errors parameters specify how to decode percent-encoded

    sequences into Unicode characters, as accepted by the bytes.decode()

    method.

    By default, percent-encoded sequences are decoded with UTF-8, and invalid

    sequences are replaced by a placeholder character.

    unquote('abc%20def') -> 'abc def'.

    """

    if '%' not in string:

    string.split

    return string

    if encoding is None:

    encoding = 'utf-8'

    if errors is None:

    errors = 'replace'

    bits = _asciire.split(string)

    res = [bits[0]]

    append = res.append

    for i in range(1, len(bits), 2):

    append(unquote_to_bytes(bits[i]).decode(encoding, errors))

    append(bits[i + 1])

    return ''.join(res)def quote(string, safe='/', encoding=None, errors=None):

    """quote('abc def') -> 'abc%20def'

    Each part of a URL, e.g. the path info, the query, etc., has a

    different set of reserved characters that must be quoted.

    RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax lists

    the following reserved characters.

    reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |

    "$" | ","

    Each of these characters is reserved in some component of a URL,

    but not necessarily in all of them.

    By default, the quote function is intended for quoting the path

    section of a URL. Thus, it will not encode '/'. This character

    is reserved, but in typical usage the quote function is being

    called on a path where the existing slash characters are used as

    reserved characters.

    string and safe may be either str or bytes objects. encoding and errors

    must not be specified if string is a bytes object.

    The optional encoding and errors parameters specify how to deal with

    non-ASCII characters, as accepted by the str.encode method.

    By default, encoding='utf-8' (characters are encoded with UTF-8), and

    errors='strict' (unsupported characters raise a UnicodeEncodeError).

    """

    if isinstance(string, str):

    if not string:

    return string

    if encoding is None:

    encoding = 'utf-8'

    if errors is None:

    errors = 'strict'

    string = string.encode(encoding, errors)

    else:

    if encoding is not None:

    raise TypeError("quote() doesn't support 'encoding' for bytes")

    if errors is not None:

    raise TypeError("quote() doesn't support 'errors' for bytes")

    return quote_from_bytes(string, safe)

    展开全文
  • 一、为什么要进行Url编码url带参数的请求格式为(举例): ...、=等特殊符号时,通过url编码,将data转化为特定格式k1=v1&k2=v2,并且将中文和特殊符号进行编码,避免发生歧义二、Url编码1、urlencode( )from urllib...

    一、为什么要进行Url编码

    url带参数的请求格式为(举例): http://www.baidu.com/s?k1=v1&k2=v2

    当请求数据为字典data = {k1:v1, k2:v2},且参数中包含中文或者?、=等特殊符号时,通过url编码,将data转化为特定格式k1=v1&k2=v2,并且将中文和特殊符号进行编码,避免发生歧义

    二、Url编码

    1、urlencode( )

    from urllib importparsefrom urllib importrequest

    url= 'http://www.baidu.com/s?'dict1={'wd': '百度翻译'}

    url_data= parse.urlencode(dict1) #unlencode()将字典{k1:v1,k2:v2}转化为k1=v1&k2=v2

    print(url_data) #url_data:wd=%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91

    data = request.urlopen((url+url_data)).read() #读取url响应结果

    data = data.decode('utf-8') #将响应结果用utf8编码

    print(data)

    url_org= parse.unquote(url_data) #解码url

    print(url_org) #url_org:wd=百度翻译

    str1 = 'haha哈哈'str2= parse.quote(str1) #将字符串进行编码

    print(str2) #str2=haha%E5%93%88%E5%93%88

    str3 = parse.unquote(str2) #解码字符串

    print(str3) #str3=haha哈哈

    2、quote( ) 和 unquote( )

    str1 = 'haha哈哈'str2= parse.quote(str1) #quote()将字符串进行编码

    print(str2) #str2=haha%E5%93%88%E5%93%88

    str3 = parse.unquote(str2) #解码字符串

    print(str3) #str3=haha哈哈

    展开全文
  • Python url编码解码

    千次阅读 2019-08-16 13:21:38
    url编码有什么作用? Python怎么对url进行编码和解码? 导入模块 编码 解码 引题 我们上网的时候经常见到url中会有%25E6,这样有%号的字符,下面是51job的链接: https://search.51job.com/list/020000,...

     

    目录

    引题

    url编码有什么作用?

    Python怎么对url进行编码和解码?

    导入模块

    编码

    解码


    引题

    我们上网的时候经常见到url中会有%25E6,这样有%号的字符,下面是51job的链接:

    https://search.51job.com/list/020000,000000,0000,00,9,99,%25E6%25B7%25B1%25E5%25BA%25A6%25E5%25AD%25A6%25E4%25B9%25A0,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=

     

    %25E6%25B7%25B1%25E5%25BA%25A6%25E5%25AD%25A6%25E4%25B9%25A0

    是我搜索的关键字“深度学习”,这是url编码两次后的结果。

    通过在线url解码试试看解码的结果,我用的在线解码网址:https://www.sojson.com/encodeurl.html

    1、第一次解码,得到的结果是%后面加两个字符

    2、第二次解码,得到的就是正常的中文了。

    一般的,url编码后的规律:

    编码一次,%号后面加两个字符;

    编码二次,%号后面加四个字符;

    编码三次,%号后面加六个字符。

     

    url编码有什么作用?

    如果你搜索的关键词是“深度学习&机器学习”,中间有个url的特殊字符&,那么服务器收到这个get请求的时候就会出错,不知道如何去解析请求带的参数了,所以需要把这一整块进行编码。编码一次得到的结果是%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0&%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0,就已经没有特殊字符&,这样请求就没有问题,服务器拿到这个参数进行解码就能正常解析得到想要的参数。

     

    Python怎么对url进行编码和解码?

     

    导入模块

    import urllib.parse

    编码

    urllib.parse.quote(),对字符串进行url编码
    import urllib.parse
    kw="机器学习"
    kw1=urllib.parse.quote(kw)
    print(kw1)
    kw2=urllib.parse.quote(kw1)
    print(kw2)
    kw3=urllib.parse.quote(kw2)
    print(kw3)

    输出结果:

    %E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0
    %25E6%259C%25BA%25E5%2599%25A8%25E5%25AD%25A6%25E4%25B9%25A0
    %2525E6%25259C%2525BA%2525E5%252599%2525A8%2525E5%2525AD%2525A6%2525E4%2525B9%2525A0

    解码

    urllib.parse.unquote() ,对字符串进行url解码
    import urllib.parse
    kw="机器学习"
    # 编码
    kw1=urllib.parse.quote(kw)
    print(kw1)
    kw2=urllib.parse.quote(kw1)
    print(kw2)
    kw3=urllib.parse.quote(kw2)
    print(kw3)
    
    # 解码
    ym2=urllib.parse.unquote(kw3)
    print(ym2)
    ym1=urllib.parse.unquote(ym2)
    print(ym1)
    ym=urllib.parse.unquote(ym1)
    print(ym)

    输出结果:

    # 编码开始
    %E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0
    %25E6%259C%25BA%25E5%2599%25A8%25E5%25AD%25A6%25E4%25B9%25A0
    %2525E6%25259C%2525BA%2525E5%252599%2525A8%2525E5%2525AD%2525A6%2525E4%2525B9%2525A0
    
    # 解码开始
    %25E6%259C%25BA%25E5%2599%25A8%25E5%25AD%25A6%25E4%25B9%25A0
    %E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0
    机器学习

    最后得到我们的最原始的字符串!

     

     

     

     

     

     

    展开全文
  • Python进行URL编码解码

    2018-08-02 09:17:24
    urllib.unquote()目的是对url编码进行解码 urllib.quote()目的是对url编码进行编码   url编码: import urllib urllib.quote("河源") 输出结果:'%E6%B2%B3%E6%BA%90   url解码: import ...

    urllib.unquote()目的是对url编码进行解码

    urllib.quote()目的是对url编码进行编码

     

    url编码:

    import urllib
    urllib.quote("河源")

    输出结果:'%E6%B2%B3%E6%BA%90

     

    url解码:

    import urllib
    rawurl = "%E6%B2%B3%E6%BA%90"
    url = urllib.unquote(rawurl)
    print url

    输出结果:河源

     

    URL为何要编码、解码?

        通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据。对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。

        例如,Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。

        又如,Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。否则如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成问题。

    感谢原作者:https://www.cnblogs.com/kaituorensheng/p/3927000.html

    展开全文
  • python Url编码解码

    2019-06-11 15:09:24
    为什么要用Url编码解码? url带参数的请求格式为(举例): http://www.baidu.com/s?k1=v1&k2=v2 当请求数据为字典data = {k1:v1, k2:v2},且参数中包含中文或者?、=等特殊符号时,通过url编码,将data转化为...
  • python url编码解码

    2019-06-14 15:25:47
    在通过浏览器修改数据库时,要对url内容进行编码 quote()编码; unquote()解码; 直接上代码:
  • python3 url 编码 解码

    2020-07-18 21:31:40
    对于url编码的转换,主要用urllib.parse包中的quote和unquote方法。 quote进行解码,unquote进行编码。 代码实例: import urllib.parse u = "%E6%88%91%E7%88%B1%E4%B8%AD%E5%9B%BD" print("url解码:",urllib...
  • Python url编码、url解码

    2020-08-19 19:24:49
    url编码 import urllib.parse u = "%E6%88%91%E7%88%B1%E4%B8%AD%E5%9B%BD" print("url编码:",u) print("url编码:",urllib.parse.quote("我爱中国")) url解码 import urllib.parse u = "%E6%88%91%E7%88%...
  • python url编码解码

    2019-09-21 21:07:12
    一、为什么要进行Url编码 url带参数的请求格式为(举例): http://www.baidu.com/s?k1=v1&k2=v2 当请求数据为字典data = {k1:v1, k2:v2},且参数中包含中文或者?、=等特殊符号时,通过url编码,将data转化为...
  • 使用pythonurl编码解码

    千次阅读 2015-10-22 07:53:22
    url进行编码解码python提供了很方便的接口进行调用。1. urllib.quote(string[, safe]):对字符串进行编码。参数 safe 指定了不需要编码的字符; 2. urllib.unquote(string) :对字符串进行解码; 3. urllib....
  • Python3 URL编码解码

    2018-12-03 19:37:01
    编码 from urllib.parse import quote text = quote(text, 'utf-8') 注:text为要进行编码的字符串 ...解码 fro urllib.parse import unquote text = unquote(text, 'utf-8') 链接码云 ...
  • python3 url 编码解码

    2019-01-27 16:43:50
    编码 from urllib.parse import quote text = quote(text, 'utf-8') 解码 from urllib.parse import unquote text = unquote(text, 'utf-8')
  • python url解码编码

    2020-02-19 14:37:01
    url编码解码测试网址https://www.cnblogs.com/jessicaxu/p/7977277.html url编码解码详解https://www.cnblogs.com/jessicaxu/p/7977277.html
  • python url编码解码

    2014-09-03 14:47:53
    >>> urllib.unquote('%E4%B8%BD%E6%B1%9F')   >>> data '\xe4\xb8\xbd\xe6\xb1\x9f' >>> urllib.quote(data)
  • Python3的URL编码解码

    万次阅读 2018-03-28 17:01:29
    前言博主最近在用python3比较强大的Django开发web的时候,发现一些url编码问题,在浏览器提交请求api时,如果url中包含汉子,就会被自动编码掉。呈现的结果是 ==> %xx%xx%xx。如果出现3个百分号为一个原...
  • 使用pythonurl编码解码 (转)

    千次阅读 2017-11-03 18:53:41
    写cgi经常碰到的一个问题就是对url进行编码解码python提供了很方便的接口进行调用。url中的query带有特殊字符(不是url的保留字)时需要进行编码。当url中带有汉字时,需要特殊的处理才能正确编码,以下都只针对...
  • Python中对字符串的url编码和url解码方法,使用到了urllib库
  • Python url编码

    千次阅读 2019-05-10 21:53:54
    Python3对url解码
  • python json编码解码

    2020-04-07 18:36:33
    json.dumps(): 对数据进行编码。 json.loads(): 对数据进行解码Python和JSON转换对应表: Python JSON dict object dict object list, tuple array str string int, float, int- & float-...
  • # coding:utf-8import urllib.parseclass Urlchuli():"""Url处理类,需要传入两个实参:Urlchuli('实参','编码类型'),默认utf-8url编码方法:url_bm() url解码方法:url_jm()"""def __init__(self,can,m...
  • 实现URL编码解码python程序_Linxh_百度空间 实现URL编码解码python程序_Linxh_百度空间实现URL编码解码python程序2006-12-30 14:40#!/usr/bin/python importurllib imports...
  • 一:url编码解码简介 url编码解码,又叫百分号编码,是统一资源定位(URL)编码方式。URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符...
  • 实现URL编码解码python程序

    千次阅读 2012-05-03 17:32:20
    实现URL编码解码python程序 2006-12-30 14:40 #!/usr/bin/python import urllib import sys string = sys.argv[1] string = unicode(string,"gbk") utf8_string...
  • Python3 urlencode编码urldecode解码分别用到了urllib.parse.quote和urllib.parse.unquote. import urllib.parse font = "微软雅黑" # urlencode q = urllib.parse.quote(font) print(q) # urldecode u = urllib...
  • Python-Url编码解码

    2018-04-10 09:41:15
    Python-Url编码解码一、为什么要进行Url编码url带参数的请求格式为(举例): http://www.baidu.com/s?k1=v1&k2=v2当请求数据为字典data = {k1:v1, k2:v2},且参数中包含中文或者?、=等特殊符号时,通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,306
精华内容 7,722
关键字:

pythonurl编码解码

python 订阅