遇到'latin-1' codec can't encode character '\u2028'了怎麼辦

背景

工做中使用python的requests庫作文件上傳,在構建請求的過程當中報錯:python

Debug過程

一、根據報錯信息得知'latin-1'不能編碼字符'\u2028',谷歌查詢'\u2028'是個換行符,然而魔幻的是我在代碼裏的並無看到換行符的存在;markdown

二、接下來咱們看一看Traceback,顯示RequestUtil.py文件中的第31行代碼調用到client.py的第1212行代碼encode的時候報錯了: app

三、那咱們不妨去看看client.py的第1212行代碼究竟是在encode什麼的時候報錯的: 在1處(client.py的第1212行)打上斷點,點擊2處的"小蟲子",斷點斷住的時候點擊3處繼續執行,觀察每次的values值。一頓操做後能夠看到4處顯示「application/octet-stream\u2028」,終於找到了這個「\u2028」:

四、「application/octet-stream」是我上傳文件的時候設置的header中的「Content-Type」的值,然而代碼中並無看到這個「\u2028」: 編碼

五、精彩的來了,我把這行代碼刪除掉一個字母一個字母的手動敲了一遍,再運行一次她竟然課能夠了!!!本着不信邪的精神我把原來的那行代碼和手動寫的代碼都轉碼了一下看到以前的那行代碼果真有「\u2028」:spa

六、我細細思索了一下想到以前的「application/octet-stream」是我從接口文檔複製過來的,打開個人文檔從新試了一下,就是紅框裏的這個東西被我複製進去了!!!必定要當心!!! code

七、至此,終於破案了!!!orm

總結

在寫代碼的過程當中報錯了必定要看Traceback,根據提示一步一步的找到緣由,研究解決方案。不要看到錯誤就馬上去網上一頓瞎搜。另:寫這個文章的目的是記錄一下在工做中遇到的問題,同時也但願給遇到一樣問題的夥伴提供一個解題思路。 最後祝你們寫代碼都順順利利呀~~~接口

相關文章
相關標籤/搜索