'utf-8' codec can't encode character '\udcd5' in position 64
有一種原因是路徑中有中文亂碼。
'utf-8' codec can't encode character '\udcc0' in position 35
\udcd5 udcc0 是unicode 格式,都是中文的亂碼,
可以用在線unicode轉換查看:
https://www.bejson.com/convert/unicode_chinese/
在爬蟲抓取網頁信息時常需要將類似"\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8"轉換爲中文,實際上這是unicode的中文編碼。可用以下方法轉換:
1、
1 >>> s = u'\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8'
2 >>> print s
3 人生苦短,py是岸
2、
1 >>> s = r'\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8'
2 >>> s = s.decode('unicode_escape')
3 >>> print s
4 人生苦短,py是岸
還有就是網上說的,路徑有斜槓,我的是第一種原因。
在網上看了一些基本上都是說文件的路徑的問題,不排除是因爲文件路徑的問題。windows下文件夾的路徑使用“\\”隔開,Linux中使用“/”,我簡單的理解爲windows下需要轉義一下,不能直接使用“/”;如果在windows中使用python的話,直接在文件路徑前面加“r”,那麼也可以直接使用“/”來隔開文件夾了。可是我的文件路徑都是英文路徑,仍然報這個錯誤。這也是很多新手都會犯的錯誤,將別人的模型拿過來直接用是有風險的。這裏就是我前面提到的,原因是我用的是CPU跑GPU訓練出來的模型。沒有辦法只有重新使用CPU訓練模型或者用GPU來跑這個模型。如果模型不是很大很複雜,CPU能扛得住的話,在學習階段建議還是可以跑一跑的。