如何在Python中对字符串进行编码和解码以用于URL?

5 投票
8 回答
21655 浏览
提问于 2025-04-15 11:39

我有一个这样的字符串:

String A: [ 12234_1_Hello'World_34433_22acb_4554344_accCC44 ]

我想把字符串A加密,这样它可以用在干净的URL里。比如说像这样:

String B: [ cYdfkeYss4543423sdfHsaaZ ]

在Python里有没有一个编码的接口,给我字符串A,它能返回字符串B?还有没有一个解码的接口,给我字符串B,它能返回字符串A?

8 个回答

6

你是想对字符串进行加密,还是想编码以去掉网址中的非法字符呢?如果是后者,你可以使用 urllib.quote

>>> quoted = urllib.quote("12234_1_Hello'World_34433_22acb_4554344_accCC44")
>>> quoted
'12234_1_Hello%27World_34433_22acb_4554344_accCC44'

>>> urllib.unquote(quoted)
"12234_1_Hello'World_34433_22acb_4554344_accCC44"
13

请注意,编码和加密是两回事。

如果你想发送一些敏感信息,那就不要使用上面提到的编码方法;)

9

一种进行编码和解码的方法是使用base64这个包,下面是一个例子:

import base64
import sys

encoded = base64.b64encode(sys.stdin.read())
print encoded

decoded = base64.b64decode(encoded)
print decoded

这是不是你想要的?在你的具体情况下,你得到的结果是:

输入:12234_1_Hello'World_34433_22acb_4554344_accCC44

编码后的结果:MTIyMzRfMV9IZWxsbydXb3JsZF8zNDQzM18yMmFjYl80NTU0MzQ0X2FjY0NDNDQ=

解码后的结果:12234_1_Hello'World_34433_22acb_4554344_accCC44

撰写回答