python 兼容 php urldecode 处理

#注意当前脚本是python 3.6.x
#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib,sys,re
import struct
#读取当前编码
print (sys.getdefaultencoding())
qrcode="xxxxxxxxxxxxxxxxxxxxxxxxxxx"
#php urlencode 同 python 的urlencode 差别是
#python的urldecode处理有两种 urllib.parse.unquote_plus 和 urllib.parse.unquote
#差别是 urllib.parse.unquote_plus 会将 "+" 调整为 " ".这是和php urldecode相同的方式
#但是普通urllib.parse.unquote处理会将内容进行编码,导致结果和要的冲突.文件本身已是二进制,直接读,写入就是文件,经过编码,文件就出问题

qrcode=qrcode.replace("+"," ")
#比较 plus 后的处理结果是否相同
print (urllib.parse.unquote(qrcode)==urllib.parse.unquote_plus(qrcode))
#原内容长度
print (len(qrcode))
#获取二进制内容长度,用于判断是否有漏缺
print (len(urllib.parse.unquote_to_bytes(qrcode)))
#将处理后的内容写入文件
file=open("test.png","wb")
file.write(urllib.parse.unquote_to_bytes(qrcode))
file.close();

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注