背景
工作中使用python的requests库做文件上传,在构建请求的过程中报错:

Debug过程
1、根据报错信息得知'latin-1'不能编码字符'\u2028',谷歌查询'\u2028'是个换行符,然而魔幻的是我在代码里的并没有看到换行符的存在;
2、接下来我们看一看Traceback,显示RequestUtil.py文件中的第31行代码调用到client.py的第1212行代码encode的时候报错了:


4、“application/octet-stream”是我上传文件的时候设置的header中的“Content-Type”的值,然而代码中并没有看到这个“\u2028”:

5、精彩的来了,我把这行代码删除掉一个字母一个字母的手动敲了一遍,再运行一次她居然课可以了!!!本着不信邪的精神我把原来的那行代码和手动写的代码都转码了一下看到之前的那行代码果然有“\u2028”:

6、我细细思索了一下想到之前的“application/octet-stream”是我从接口文档复制过来的,打开我的文档重新试了一下,就是红框里的这个东西被我复制进去了!!!一定要小心!!!

7、至此,终于破案了!!!
总结
在写代码的过程中报错了一定要看Traceback,根据提示一步一步的找到原因,研究解决方案。不要看到错误就立刻去网上一顿瞎搜。另:写这个文章的目的是记录一下在工作中遇到的问题,同时也希望给遇到同样问题的伙伴提供一个解题思路。 最后祝大家写代码都顺顺利利呀~~~