今天在接收一个ftp://abc:z%23xxx@exa.com/,直接放到ie浏览器中可以打开,放到leapftp中登录失败,仔细一看才发现,原来密码是已经按照url进行了编码,ftp client不能直接识别。
因为url中不能直接写入特殊字符,所以像空格,#等就需要进行url编码,编码的原则是,% 特殊字符的十六进制数, 如#的十六进制是23,所以#号在url中的表示是 %23.
编码:
def urlSpecialcharsEncode(c):
return str(hex(ord(c))).replace("0x","%")
|
解码:
所以要算出%23对应的字符是什么,需要反过来。
(1) 23的十进制数35,
(2) 35对应的的ascii
在python中比较容易实现,只在两个方法:
chr(int('23',16)) --- > #
其中,int(str, 16) - > 把16进制字符数字->10进制,
chr(i) --- > 对应的ascii
def urlSpecialcharsDecode(str):
return chr(int(str.replace("%',""),16))
|
阅读(759) | 评论(0) | 转发(0) |