对于URL来说,通常是英文字母,数字和某些标点符号,这是网络标准做了硬性的规定:
"...Only alphanumerics [0-9a-zA-Z], the special characters "$-_.+!*'()," [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL."
"只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。"
当遇到中文的时候,有时候浏览器会进行处理,将他进行编码,例如:
可以看到,我们在搜索的中文是“新闻周刊”,虽然在URL中显示了中文,但是查看实际发起的请求,他的URL中是不包含中文的,中文被替换成为了:
“%E6%96%B0%E9%97%BB%E5%91%A8%E5%88%8A”
也是就说这一串字符实际上是经过编码后的“新闻周刊”,Python中也提供了相应的工具去完成这件事情。
from urllib.parse import quote,unquote
# 编码
print(quote('新闻周刊'))
# 解码
print(unquote('%E6%96%B0%E9%97%BB%E5%91%A8%E5%88%8A'))
print(unquote(quote('新闻周刊')))
输出结果:
如果需要对字典编码,可以使用urlencode:
from urllib.parse import urlencode
data ={
'content':"新闻周刊",
'charsetselect':"utf-8",
'en':'UrlEncode编码'}
print(urlencode(data))
输出结果: