前言
django項目開發過程中,碰到了多種情況下的中文亂碼報錯,在這兒做一下處理總結。
報錯:UnicodeEncodeError: 'ascii' codec can't encode characters in position x-x: ordinal not in range(128)
1.因代碼中的中文注釋問題的報錯
django項目的.py文件文件中加入了中文注釋,經常會因此報錯而導致無法運行,究其原因是編碼的問題,最后的解決辦法是直接在有中文注釋的.py文件的頂部加上:
# -*-coding:utf-8 -*-
2.運行過程中的中文亂碼的報錯
首先確保連接的數據庫的基礎設置是utf-8:

然后確認django項目中的網頁頭部設置編碼為utf-8,網頁頭部加上代碼:
<meta charset="utf-8">
最后仍然報錯就是因為django項目中我們沒有指明編碼方式,所以按照默認設置來,而非正常的utf-8,為:

所以項目最后需要在進行編碼操作的地方,或者直接在settings.py中加入:
import sysreload(sys)sys.setdefaultencoding('utf-8')3.項目配置在debian系統中,FileField字段在admin中因中文文件名上傳報錯
在一個django項目中發現,在本地windows測試環境中,django admin的文件上傳功能毫無障礙,可是當項目布置在debian環境中時,中文文件名的文件在admin中無法上傳,并且報中文亂碼的錯,該錯誤的主要原因來自系統編碼問題,該debian系統中未設置系統編碼語言,均為默認設置,導致所布置的項目無法正常運行,解決如下:
(1).終端中操作安裝locales
apt-get install locales
(2).重新選擇字符編碼
dpkg-reconfigure locales
(3).空格選擇所有zh_開頭的字符編碼,OK確認下一步,選擇中文UTF-8



(4).debian里需要在~/.bashrc里面最下面加入export LC_ALL=zh_CN.UTF-8或者直接運行export LANG=zh_CN.UTF-8
(5).最后直接reboot重啟服務器,查看系統編碼,UTF-8中文生效,locale命令可以直接查看系統編碼設置,此時再運行django項目上傳中文名文件無誤。
附:django郵件亂碼解決方案
python中有email.meeesage 和 email.header 對郵件中的非ASCII進行處理, 因此需要對sendMail函數中的參數進行如下處理:
新聞熱點
疑難解答