问题
浏览器地址栏中的网址(URL)【中文】部分,复制粘贴后变成“乱码”?
如下图浏览器地址栏中显示的网址(URL)为:
“https://www.baidu.com/s?ie=UTF-8&wd=百度”
当复制粘贴在word、记事本、excel中时,网址(URL)里面的【中文】部分将变成“乱码”,如下:
https://www.baidu.com/s?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6
出现该问题的原因
网址(URL):本身不支持中文,所有中文字符都要经过编码之后才可以传输,浏览器地址栏中显示出中文部分仅是为了用户体验(直观易看)。
“乱码”:网址(URL)里面的中文部分被编码成了“%”+中文编码后的字符:%xx,如上述URL中的“百度”被编码为“%E7%99%BE%E5%BA%A6”。
总结来看,此处的“乱码”是一种经编码后显示的结果,是有规律和可以相互转换的。
处理方法
以下基于非技术、python技术两个角度,总结了该问题的处理方法。
1、非技术处理
此方法是最直接简单的处理方法,实现复制粘贴后的【中文】正常显示。
十分适用于日常撰写文档时,快速有效地复制含中文的URL。毕竟经过编码后的中文部分较长,使得整个文档看起来较为不直观、不简洁。
方法如下:
第一步:直接在浏览器地址栏中网址(URL)“http”前面添加任意个字符(数字、字母、汉字等),让浏览器自动识别不出来是URL。
第二步:复制需要的目标URL即可。如:https://www.baidu.com/s?ie=UTF-8&wd=百度。注意的是:如果直接复制,没有成功显示中文,就【回车】一下,再复制即可。
2、使用python处理
此方法借助python的urllib库,实现URL【中文】部分的编码与解码。
适用于批量处理等,特别是爬虫部分。
(1)解码
方法:urllib.parse.unquote(‘’)
释义:对URL【中文】“乱码”部分进行解码
实例:
对URL“https://www.baidu.com/s?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6”中的“%E7%99%BE%E5%BA%A6”,进行解码。
from urllib.parse import unquote
url_str = 'https://www.baidu.com/s?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6'
paras = unquote(url_str)
print(paras)
(2)编码
方法:urllib.parse.quote(‘中文’)
释义:将URL的中文部分进行编码
实例:对URL“https://www.baidu.com/s?ie=UTF-8&wd=百度”中的“百度”进行编码。
from urllib.parse import quote
url_str = '百度'
paras = quote(url_str)
url = "https://www.baidu.com/s?ie=UTF-8&wd={}".format(paras)
print(url)
以上关于网址(URL)中文“乱码”的原因及处理方法,可供参考。
-end-