1116单元测试框架与自动化测试框架作业讲解

代码仓库地址: Sign in · GitLab

请求地址中中文解析问题,代码中已完善:

问题原因:

在URL中出现中文时,浏览器在发起请求时,会自动对URL中的中文进行编码,然后再转成2进制进行传输,当服务端收到数据后,使用decode解码后,仅从二进制转成字符,但是中文的编码依然还是url的编码状态,所以不能正常解析。

示例:

url原始地址 url 编码后 二进制传输值
a张三b a%E5%BC%A0%E4%B8%89b 01100001 0101010 … 0010101 01100010

服务器接收后解析过程:

接收的二进制值 decode解码后
01100001 0101010 … 0010101 01100010 a%E5%BC%A0%E4%B8%89b

服务器增加URL解码的解析过程:

接收的二进制值 decode解码后 URL解码
01100001 0101010 … 0010101 01100010 a%E5%BC%A0%E4%B8%89b a张三b

解决办法:

使用 urllib 包中 parse 模块中的 unquote 方法进行解析URL中的中文

from urllib.parse import unquote
url = "https://www.example.com/add?name=%E4%B8%AD%E6%96%87%E7%BC%96%E7%A0%81"
decoded_url = unquote(url)
print(decoded_url)