如何对字符串中的所有字符进行 urlencode,包括安全字符?
How do I urlencode all the characters in a string, including safe characters?
使用 Python,我如何将字符串的所有字符编码为 URL 编码的字符串?
截至目前,大约 every answer 最终引用了相同的方法,例如 urllib.parse.quote()
或 urllib.parse.urlencode()
。虽然这些答案在技术上是有效的(它们遵循在 URLs 中编码特殊字符所需的规范),但我还没有设法找到一个描述如何编码 other/non-special 字符的答案(例如小写或大写字母)。
如何获取字符串并将每个字符编码为 URL 编码的字符串?
This gist 揭示了这个问题的一个非常好的答案。最终的功能代码如下:
def encode_all(string):
return "".join("%{0:0>2}".format(format(ord(char), "x")) for char in string)
我们来分解一下。
首先要注意的是 return 值是 generator expression (... for char in string
) 包装在 str.join
调用 ("".join(...)
) 中。这意味着我们将对字符串中的每个字符执行一个操作,然后最终将每个输出的字符串连接在一起(使用空字符串,""
)。
对string
中的每个字符进行的操作是"%{0:0>2}".format(format(ord(char), "x"))
。这可以分解为以下内容:
ord(char)
:将每个字符转换为对应的数字
format(..., "x")
:将数字转换为十六进制值。
"%{0:0>2}".format(...)
:将十六进制值格式化为字符串(带前缀"%"
)。
当您从概览中查看整个函数时,它将每个字符转换为一个数字,将该数字转换为十六进制,然后将所有十六进制值塞入一个字符串(然后 returned ).
使用 Python,我如何将字符串的所有字符编码为 URL 编码的字符串?
截至目前,大约 every answer 最终引用了相同的方法,例如 urllib.parse.quote()
或 urllib.parse.urlencode()
。虽然这些答案在技术上是有效的(它们遵循在 URLs 中编码特殊字符所需的规范),但我还没有设法找到一个描述如何编码 other/non-special 字符的答案(例如小写或大写字母)。
如何获取字符串并将每个字符编码为 URL 编码的字符串?
This gist 揭示了这个问题的一个非常好的答案。最终的功能代码如下:
def encode_all(string):
return "".join("%{0:0>2}".format(format(ord(char), "x")) for char in string)
我们来分解一下。
首先要注意的是 return 值是 generator expression (... for char in string
) 包装在 str.join
调用 ("".join(...)
) 中。这意味着我们将对字符串中的每个字符执行一个操作,然后最终将每个输出的字符串连接在一起(使用空字符串,""
)。
对string
中的每个字符进行的操作是"%{0:0>2}".format(format(ord(char), "x"))
。这可以分解为以下内容:
ord(char)
:将每个字符转换为对应的数字format(..., "x")
:将数字转换为十六进制值。"%{0:0>2}".format(...)
:将十六进制值格式化为字符串(带前缀"%"
)。
当您从概览中查看整个函数时,它将每个字符转换为一个数字,将该数字转换为十六进制,然后将所有十六进制值塞入一个字符串(然后 returned ).