网页地址的解码与编码

有时我们看到某网页地址在浏览器中是正常显示的,但是复制粘贴到代码编辑器中就显示为乱码了,这种情况对含有中文的网页地址尤为明显。那如何在代码编辑器中也正常显示网页地址呢?这就涉及到网页地址的解码与编码了。
采用python标准库中的urllib.parse模块的quote函数与unquote函数可简单解决此问题。

1.网络地址的解码

采用unquote函数实现解码。
示例如下:

In [74]: u2
Out[74]: 'https://baike.baidu.com/item/%E8%A0%95%E8%99%AB'

In [75]: from urllib.parse import unquote

In [76]: r_u2 = unquote(u2)

In [77]: r_u2
Out[77]: 'https://baike.baidu.com/item/蠕虫'

可以看到,乱码显示的网络地址u2,经过unquote函数的处理后,就正常显示了。

2.网络地址的编码

采用quote函数实现编码。
示例如下:

In [77]: r_u2
Out[77]: 'https://baike.baidu.com/item/蠕虫'

In [78]: from urllib.parse import quote

In [79]: quote(r_u2)
Out[79]: 'https%3A//baike.baidu.com/item/%E8%A0%95%E8%99%AB'

此时,r_u2虽然重新被编码了,但请注意,https后面的冒号也被编码为%3A了,这不是我们想要的结果。
解决办法就是,在quote函数中继续引入safe参数,表明safe参数的值不会被编码转换,默认的safe参数为/。在下面的safe参数中加入:号。

In [82]: quote(r_u2, safe='/:')
Out[82]: 'https://baike.baidu.com/item/%E8%A0%95%E8%99%AB'

此时,问题就完美解决了。

总结:urllib.parse模块的quote函数与unquote函数很简单实用,值得掌握。

你可能感兴趣的:(网页地址的解码与编码)