Python中如何进行全部字符的URL编码?

比如 admin 在用 urllib 的 quote 时还是 admin ,希望能够对非特殊字符也进行 URL 编码,变为%61%64%6D%69%6E

Google 的好半天没有查到,求高手解答!
Python中如何进行全部字符的URL编码?

12 回复

你抄一下官方库代码, 自己写个函数把这个限制去掉不就好了, 就几句代码


import urllib.parse

# 对整个字符串进行URL编码
text = "你好,世界! Hello World! 123 &特殊字符@#$"
encoded = urllib.parse.quote(text, safe='')
print(encoded)
# 输出: %E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C%EF%BC%81%20Hello%20World%21%20123%20%26%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%40%23%24

# 解码验证
decoded = urllib.parse.unquote(encoded)
print(decoded)  # 输出原始字符串

urllib.parse.quote(),第二个参数safe=''表示不对任何字符保留(默认保留斜杠等)。如果要编码查询参数,用urllib.parse.urlencode()

总结:用quote(text, safe='')编码全部字符。

re.sub(r’.’, lambda m: ‘%%%s’ % m.group(0).encode(‘hex’).upper(), ‘admin’)

a = b’admin’
b = ‘’.join(’%{:02X}’.format(x) for x in a)
print(b)

对英文字符也编码的好处或者用处是啥?

urllib2.quote

admin ? 你该不会是想通过 url encode 的方式 来搞 sql 防注入之类的 东东吧? 慎之。

感谢~懒得自己改了,想看看有没有直接能用的,我在 python2.7 中试 format 里的 x 还需要加 ord~

学习了~re 的 sub 还可以这么用

是完全 URL 编码, quote 只编码影响 URL 的特殊字符

测试用途
当然不是 绕过注入防护还差不多~

回到顶部