Python 3 UnicodeEncodeError: 'ascii' codec can't encode characters
之前在我的那個硬體網站【玩點什麼】,遇到了一個 Python 的中文編碼問題。大抵的問題是一箇中文的 URL 的識別問題。
在訪問 URLofollow,noindex" target="_blank">https://www.wandianshenme.com/play/category/搭建指南/ 的時候,報了一個錯誤:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range
之前在網上搜索的相關結果都是 Python 2.7 下才有這個問題。然而,在相關的 python 程式碼裡,我已經使用# -*- coding: utf-8 -*-
聲明瞭 UTF-8 編碼,還是報了這個問題。
對於使用 Django,而且 Python 版本是 2.7 來說,可以嘗試這麼解決:
import sys from importlib import reload reload(sys) if sys.version[0] == '2': reload(sys) sys.setdefaultencoding("utf-8")
我也嘗試了這樣的一個方法,但是不 work
export PYTHOIO/">NIOENCODING=UTF-8
於是,之前便不了了之了。
直到最近我的 iTerm 自動將 Git 相關的內容變成了中文:
列舉物件: 5, 完成. 物件計數中: 100% (5/5), 完成. 使用 8 個執行緒進行壓縮 壓縮物件中: 100% (3/3), 完成. 寫入物件中: 100% (3/3), 705 bytes | 705.00 KiB/s, 完成. 總共 3 (差異 2),複用 0 (差異 0) remote: Resolving deltas: 100% (2/2), completed with 2 local objects. To https://github.com/phodal/play 5af94c0..573f947master -> master
我又嘗試去解決這個問題,結果發現是類似的問題,只需要:
export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8 export LC_ALL=en_US.UTF-8
這樣一來,問題就解決了。